2017-11-02 3 views
3

私はFragment1からFragment2を呼び出すアプリケーションで作業しています.Fragment2のデフォルトの戻るボタンを押すと、Fragment1に移動しますが、他のボタンを押して呼び出しを閉じると、閉じることになります私の活動。フラグメントのバックスタックAndroid

MainActivity.java

public class MainActivity extends AppCompatActivity { 

    AHBottomNavigation bottomNavigation; 
    Fragment selectedFragment = null; 

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

     bottomNavigation = (AHBottomNavigation) findViewById(R.id.navigation); 

     AHBottomNavigationItem item1 = new AHBottomNavigationItem(R.string.home,  R.drawable.home, R.color.colorAccent); 
     AHBottomNavigationItem item2 = new AHBottomNavigationItem(R.string.menu,  R.drawable.menu, R.color.colorAccent); 
     AHBottomNavigationItem item3 = new AHBottomNavigationItem(R.string.cart,  R.drawable.cart, R.color.colorAccent); 
     AHBottomNavigationItem item4 = new AHBottomNavigationItem(R.string.orders, R.drawable.orders, R.color.colorAccent); 
     AHBottomNavigationItem item5 = new AHBottomNavigationItem(R.string.settings, R.drawable.setting, R.color.colorAccent); 

     bottomNavigation.addItem(item1); 
     bottomNavigation.addItem(item2); 
     bottomNavigation.addItem(item3); 
     bottomNavigation.addItem(item4); 
     bottomNavigation.addItem(item5); 
     bottomNavigation.setTitleState(AHBottomNavigation.TitleState.ALWAYS_SHOW); 
     bottomNavigation.setAccentColor(Color.parseColor("#571e19")); 

     selectedFragment = ItemHomeFragment.newInstance(bottomNavigation); 

     bottomNavigation.setOnTabSelectedListener(new AHBottomNavigation.OnTabSelectedListener() { 
      @Override 
      public boolean onTabSelected(int position, boolean wasSelected) { 

       if (position == 0) { 
        selectedFragment = ItemHomeFragment.newInstance(bottomNavigation); 
       } else if (position == 4) { 
        selectedFragment = Fragment1 (bottomNavigation); 
       } 

       android.app.FragmentManager fragmentManager = getFragmentManager(); 
       android.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
       fragmentTransaction.replace(R.id.frame_layout,selectedFragment); 
       fragmentTransaction.commit(); 


       return true; 

      } 

     }); 

     android.app.FragmentManager fragmentManager = getFragmentManager(); 
     android.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
     fragmentTransaction.replace(R.id.frame_layout, ItemHomeFragment.newInstance(bottomNavigation)); 
     fragmentTransaction.commit(); 



    } 

    public void setNotification(){ 
     bottomNavigation.setNotification("1", 1); 
    } 

} 

Fragment1.java

public class Fragment1 extends Fragment { 

    public static AHBottomNavigation bottomNavigation1; 
    TextView txtLogout,txtMyProfile,txtTermsCondition,txtRate; 
    public int LANGUAGE_REQUEST_CODE = 113; 
    private SharedPreferences prefs ; 
    Boolean languageBoolean = true; 
    MyApplication myApplication; 
    private UIView uiView = UIView.getInstance(); 
    ProgressDialog pDialog; 
    static int index; 

    public static ItemSettingsFragment newInstance(AHBottomNavigation bottomNavigation) { 
     ItemSettingsFragment fragment = new ItemSettingsFragment(); 
     bottomNavigation1 = bottomNavigation; 
     return fragment; 
    } 

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

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

     View view = inflater.inflate(R.layout.fragment_settings, container, false); 
     TextView txtLanguage = (TextView) view.findViewById(R.id.txtLanguage); 
     txtLanguage.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent intent = new Intent(getActivity(), LanguageActivity.class); 
       startActivity(intent); 
      } 
     }); 
       txtMyProfile.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       ProfileFragment fragment2 = new ProfileFragment(); 
       android.app.FragmentManager fragmentManager = getFragmentManager(); 
       android.app.FragmentTransaction fragmentTransaction =  fragmentManager.beginTransaction(); 
       fragmentTransaction.replace(android.R.id.content, fragment2); 
       fragmentTransaction.addToBackStack(null); 
       fragmentTransaction.commit(); 


      } 
     }); 

return view; 
} 

Fragment2.java

012:

Iは、以下のコードを追加しました

public class Fragment2 extends Fragment{ 

    public Fragment2() { } 

    public static Fragment newInstance() { 

     Fragment2 profileFragment = new Fragment2(); 
     return profileFragment; 
    } 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     View view=inflater.inflate(R.layout.language, container, false); 
     TextView fragment2 = (TextView) view.findViewById(R.id.txtLanguage); 
     fragment2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       getActivity().finish(); 


      } 
     }); 

     return view; 
    } 


} 
+1

仕上げ(

popBackStack(); 

を行いますが)活性 –

答えて

2

明確ではない

getActivity.finish() 

finish()活動を行います。あなたが私を助けることができる場合

FragmentManager fmOBJ= getFragmentManager(); 
fmOBJ.popBackStack(); 
+2

一つのことを破壊する、Fragment1にFragment2からデータを送信するためにどのような方法がありますpopBackStackから?それとも何か別のことをする必要がありますか? –

+2

@UKhan https://stackoverflow.com/a/23079798/3395198 –

関連する問題