2016-07-29 6 views
0

アクティビティ - MainActivityとMainActivity2があります。アクティビティ2のフラグメントからアクティビティ1に戻るときにpopBackStack()が機能しないフラグメント

MainActivity 2つのフラグメント MainActivity2を有しているので、私はMainActivity_Frag_oneからMainActivity_Frag_twoにデータを渡す1つの断片

を有しています。 MainActivity_Frag_twoのデバイスの戻るボタンと青いボタンをクリックすると、MainActivity_Frag_oneに戻って正常に機能します。その後

私は、デバイスをバック]をクリックすると、私はそれが戻ってMainActivity_Frag_twoに行くが、クリックされたときに青いボタンが(何の効果も働いていないされていないことでうまく機能ボタン意図

を使用してMainActivity_Frag_twoからMainActivity2_Frag_oneにデータを渡す、また、エラーは表示されません)。

どの部分が間違っているのか分かりますか?

enter image description hereMainActivity.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; 
} 
} 

答えて

0

あなたが戻ってスタックからの断片をポップする必要はありません前の活動に戻ります。 finish()を呼び出すことができます。あなたのMainActivity2_Frag_one.javaで

これを置き換えます

get_button.setOnClickListener(new View.OnClickListener(){ 

     public void onClick(View v){ 

      getFragmentManager().popBackStack(); 

     } 
    }); 

get_button.setOnClickListener(new View.OnClickListener(){ 

     public void onClick(View v){ 

      getActivity().finish(); 

     } 
    }); 

理由はpopBackStackある

と()することができ同じアクティビティ内で使用されます。

+0

bro!できます!あなたは – gosulove

関連する問題