2016-07-04 9 views
0

In der XML-Datei für mein Layout habe ich ein Fragment hinzugefügt. Das Layout für mein Fragment ist ein LinearLayout und es enthält eine Textansicht.Verweis auf LinearLayout in Fragment

Ich möchte einen Verweis auf das LinearLayout-Objekt in meiner Fragmentklasse erhalten, aber trotz allem, was ich online denken oder finden kann, ist es immer null.

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    text = (TextView) getActivity().findViewById(R.id.text); 
    layout = (LinearLayout) getActivity().findViewById(R.id.layout); 

    if(layout == null){ 
     text.setText("null"); 
    } 
} 

Dieser Code ist in meiner Fragment-Klasse und die Ergebnisse in den Text des Textview wird auf "null", da das Layout null ist. Wie könnte das sein, da ich versuche, die Verweise auf das Layout und die Textansicht genau so zu bekommen?


onCreate in Aktivitätsklasse

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_test); 

    manager = getFragmentManager(); 
    MyFragment = (MyFragment) manager.findFragmentById(R.id.fragment); 

} 

Methode 2

Ich habe versucht, einen Verweis auf das Linearlayout in meiner Tätigkeit bekommen. Hier ist die Aktivität onCreate mit diesem Versuch.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_test); 

    manager = getFragmentManager(); 
    MyFragment = (MyFragment) manager.findFragmentById(R.id.fragment); 

    LinearLayout ll = (LinearLayout) findViewById(R.id.layout); 
    TextView tv = (TextView) findViewById(R.id.text); 

    if(ll == null){ 
     tv.setText("null"); 
    } 
} 

Dies änderte auch den Text auf "null".

+0

Poste bitte deine 'Activity.onCreate'. Wenn die Ansichten in Ihrer Aktivität erstellt werden, empfehle ich Ihnen, den Code zu Ihrer Aktivität zu verschieben. –

+0

Sie versuchen das 'LinearLayout' des' Fragment' aus Ihrer 'Aktivität' zu bekommen? Komme ich es richtig? – Sunshinator

+0

Verweisen Sie auf die 'getActivity(). FindViewById (R.id.text)'? Ich habe auch 'getView(). FindViewById (...)' in der 'onActivityCreated() 'versucht, nur durch das Fragment zu gehen, aber das hat auch nicht funktioniert – Tirmulus

Antwort

0

Das Problem wird in beiden Fällen behoben, indem layout = (LinearLayout) getView() in der Fragmentklasse oder layout = (LinearLayout) fragment.getView() in der Aktivität angegeben wird. Dies beantwortet nicht, warum das, was ich tat, nicht funktionierte (was hilfreich sein könnte), aber das löst das Problem.