2016-06-21 15 views
0

Ich habe zwei dynamische Fragmente mit einer Aktivität verknüpft, ich versuche, einen Text vom ersten Fragment zum zweiten Fragment mit Bundle zu übergeben, aber ich bekomme Null Zeiger Ausnahme. Ist es der richtige Weg, String zwischen zwei Fragmenten zu übergeben? Unten ist mein Code:NullPointerException beim Übergeben von Zeichenfolge zwischen zwei Fragmenten

Erstes Fragment

public class FirstFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 



     View view = inflater.inflate(R.layout.content_main, container, false); 

     String text = "GetThisStringInSecondFragment"; 

     TextView txtView = null; 
     txtView = (TextView) view.findViewById(R.id.firstfragmenttext); 
     txtView.setText(text); 

     Bundle bundle = new Bundle(); 
     bundle.putString("HI", text); 

     return view; 
    } 


} 

Zweiter Teil

public class SecondFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.content_secondmain, 
       container, false); 

     TextView txtView = null; 
     txtView = (TextView) view.findViewById(R.id.secondfragmenttext); 


     Bundle bundle = this.getArguments(); 
     String myInt = bundle.getString("HI"); 

     txtView.setText(myInt); 

     return view; 
    } 


} 

Aktivität

public class MainActivity extends AppCompatActivity { 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button btnLoad = (Button) findViewById(R.id.btn_load); 

     View.OnClickListener listener = new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       FragmentManager fragmentManager = getFragmentManager(); 
       FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
       FirstFragment hello = new FirstFragment(); 
       fragmentTransaction.add(R.id.fragment_container, hello, "HELLO"); 
       fragmentTransaction.commit(); 

       FragmentManager fragmentManager2 = getFragmentManager(); 
       FragmentTransaction fragmentTransaction2 = fragmentManager2.beginTransaction(); 
       SecondFragment hello2 = new SecondFragment(); 
       fragmentTransaction2.add(R.id.fragment_container, hello2, "HELLO"); 
       fragmentTransaction2.commit(); 
      } 
     }; 

     btnLoad.setOnClickListener(listener); 

    } 


} 
+0

Was ist die Ausnahme selbst? Bitte fügen Sie ein Protokoll hinzu. –

+0

Sie haben kein Bündel zum nächsten Fragment übergeben –

+0

Wo ist _setArguments() _? – Piyush

Antwort

0

Sie getArguments in zweiten Fragmente tun, aber wo senden Sie diese Argumente aus erstes Fragment. Sie können hier Interface verwenden und es in Aktivität definieren. Aus der Aktivität können Sie die Methode setArgument() für das zweite Fragment verwenden.

Überprüfen Sie den folgenden Link für weitere Informationen und Schritte, um dies zu tun. https://developer.android.com/training/basics/fragments/communicating.html

Verwandte Themen