setContentView und findViewById

8

Nachdem ich einige verwandte Beiträge gelesen habe, weiß ich bereits, dass ich explizit zu setContenView aufrufen muss, bevor ich versuche, ein Element in einer Activity-View-Hierarchie nach ID zu finden. Ich habe eine Aktivität mit einer aufgeblasenen Ansicht erstellt und alles funktioniert gut. Das Problem ist, wenn ich versuche, eine andere Sicht auf diese Aktivität einzustellen, indem ich das nächste xml und den folgenden Code benutze:

%Vor%

code:

%Vor%

Ich habe andere leichte Variationen versucht:

%Vor%

Und ich bekomme immer btn == null. Was mache ich falsch?

Thx

    
acimutal 08.10.2015, 05:42
quelle

6 Antworten

0

Entschuldigung, ich wusste nicht, dass die ID my_bnt existiert, aber nur in einem der vorhandenen Layouts (nicht im Layout-Land oder im Layout-Xlarge). Danke für Ihre Hilfe

    
acimutal 20.10.2015, 14:15
quelle
2

Sie könnten LayoutInflater ausprobieren.

%Vor%

Glückliche Kodierungen

    
ralphgabb 20.10.2015 05:31
quelle
0

Sind Sie sicher, dass btn und bnt identisch sind?

Ich würde vorschlagen, Fragmente Google dev-Fragmente zu verwenden.

Wenn Sie dies jedoch so machen wollen, geben Sie Ihrem 'äußeren' Layout in main_activity.xml eine bestimmte ID, sagen wir rootView. Dann ruf dies an:

%Vor%

Um Fragmente zu verwenden, erstellen Sie eine Klasse, die Fragment für jede Art von Ansicht Ihrer Aktivität implementiert. Ihre Main_activity wird nur ein FrameLayout enthalten (neben persistenten Headern, Tabs, was auch immer). Da die Schaltfläche eine Ansicht ist, die sich innerhalb des Fragments innerhalb der Hauptaktivität befindet, ruft findViewById (R.id.btn) an einer beliebigen Stelle in der Hauptaktivität die Schaltfläche auf, solange das Fragment geladen ist.

irgendwo in activity_main.xml:

%Vor%

MainActivity.java

%Vor%

DemoFragment.java

%Vor%     
Laurens Koppenol 13.10.2015 06:48
quelle
0

Sie müssen das Ende der Ersetzung abwarten. Versuchen Sie Folgendes:

%Vor%     
Zsolt Mester 17.10.2015 20:07
quelle
0

Sie können dies versuchen, indem Sie in Ihrer R.layout.activity_main eine ViewGroup (FrameLayout) und dann in method_triggered_from_UI_thread () eine inflationierte Ansicht zu diesem Container hinzufügen:

%Vor%     
mishasrb 20.10.2015 00:50
quelle
-2
%Vor%     
Ashish Rawat 13.10.2015 06:34
quelle

Tags und Links