2016-07-29 25 views
0

Ich habe 2 Aktivität zurück - MainActivity und MainActivity2.popBackStack() funktioniert nicht, wenn sie von Aktivität 2 Fragment zu Fragment Aktivität 1

MainActivity hat 2 Fragmente MainActivity2 1 Fragment

i So Daten von MainActivity_Frag_one zu MainActivity_Frag_two passieren. Wenn ich auf Gerätetaste zurück und die blaue Taste in MainActivity_Frag_two, es funktioniert gut durch zu MainActivity_Frag_one zurück.

Danach gehe ich Daten von MainActivity_Frag_two zu MainActivity2_Frag_one Absicht mit

Wenn i-Geräte-Taste es gut geht zurück auf MainActivity_Frag_two funktioniert klicken Sie zurück, aber die blaue Taste funktioniert nicht (keine Auswirkung, wenn geklickt haben, auch kein Fehler zeigt).

Darf ich wissen, welcher Teil schief gegangen?

enter image description here MainActivity.java

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    FragmentManager manager=getSupportFragmentManager(); 
    FragmentTransaction transaction=manager.beginTransaction(); 
    MainActivity_Frag_one MainActivity_Frag_one=new MainActivity_Frag_one(); 
    transaction.add(R.id.activity_one_container,MainActivity_Frag_one); 
    transaction.commit(); 
} 

MainActivity_Frag_one.java

public class MainActivity_Frag_one extends Fragment { 

EditText get_text; 
Button get_button; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_main_activity__frag_one,container,false); 

    get_text=(EditText)rootView.findViewById(R.id.input_name); 
    get_button=(Button)rootView.findViewById(R.id.submit_button); 

    get_button.setOnClickListener(new View.OnClickListener(){ 

     public void onClick(View v){ 


      FragmentManager manager=getFragmentManager(); 
      FragmentTransaction transaction=manager.beginTransaction(); 
      Bundle bundle=new Bundle(); 
      bundle.putString("message", get_text.getText().toString()); 
      MainActivity_Frag_two fragobj=new MainActivity_Frag_two(); 
      fragobj.setArguments(bundle); 
      transaction.replace(R.id.activity_one_container,fragobj); 
      transaction.addToBackStack("zzz"); 
      transaction.commit(); 

     } 

    }); 

    return rootView; 
} 
} 

MainActivity_Frag_two.java

public class MainActivity_Frag_two extends Fragment { 

ImageView get_button; 
Button get_to_second_activity; 
String strtext; 

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

    View rootView = inflater.inflate(R.layout.fragment_main_activity__frag_two,container,false); 
    TextView display_text=(TextView)rootView.findViewById(R.id.display_text); 
    strtext=getArguments().getString("message"); 
    display_text.setText(strtext); 

    get_button=(ImageView)rootView.findViewById(R.id.back_button); 
    get_button.setOnClickListener(new View.OnClickListener(){ 

     public void onClick(View v){ 

      getFragmentManager().popBackStack(); 

     } 
    }); 

    get_to_second_activity=(Button)rootView.findViewById(R.id.to_second_activity); 
    get_to_second_activity.setOnClickListener(new View.OnClickListener(){ 

     public void onClick(View v){ 
      Intent intent = new Intent(getActivity(),MainActivity2.class); 
      intent.putExtra("Check","data from mainactivity_frag_two is : "+strtext); 
      startActivity(intent); 

      FragmentManager manager=getFragmentManager(); 
      FragmentTransaction transaction=manager.beginTransaction(); 
      transaction.addToBackStack(""); 
      transaction.commit(); 
     } 
    }); 
    return rootView; 
} 
} 

MainActivity2.java

public class MainActivity2 extends AppCompatActivity { 

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

    FragmentManager manager=getSupportFragmentManager(); 
    FragmentTransaction transaction=manager.beginTransaction(); 
    MainActivity2_Frag_one MainActivity2_Frag_one=new MainActivity2_Frag_one(); 
    transaction.add(R.id.activity_two_container,MainActivity2_Frag_one); 
    transaction.commit(); 

} 
} 

MainActivity2_Frag_one.java

public class MainActivity2_Frag_one extends Fragment { 
TextView get_display; 
ImageView get_button; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_main_activity2__frag_one,container,false); 

    get_display=(TextView)rootView.findViewById(R.id.display); 
    String data1=getActivity().getIntent().getExtras().getString("Check"); 
    get_display.setText(data1); 

    get_button=(ImageView)rootView.findViewById(R.id.back_to_previous_frag); 
    get_button.setOnClickListener(new View.OnClickListener(){ 

     public void onClick(View v){ 

      getFragmentManager().popBackStack(); 

     } 
    }); 
    return rootView; 
} 
} 

Antwort

0

Um zum vorherigen Tätigkeit brauchen nicht zurückgehen, das Fragment von hinten Stapel Pop. Sie können einfach finish() aufrufen.

In Ihrem MainActivity2_Frag_one.java

diese ersetzen:

get_button.setOnClickListener(new View.OnClickListener(){ 

     public void onClick(View v){ 

      getFragmentManager().popBackStack(); 

     } 
    }); 

mit

get_button.setOnClickListener(new View.OnClickListener(){ 

     public void onClick(View v){ 

      getActivity().finish(); 

     } 
    }); 

Der Grund dafür ist popBackStack() kann sein innerhalb derselben Aktivität verwendet werden.

+0

bro! Es klappt! ich danke dir – gosulove

Verwandte Themen