2017-10-29 17 views
-2

私はランチャーアクティビティがナビゲーション引き出しアクティビティである単純なアンドロイドアプリを持っています。ユーザーがサイドバーのボタンをクリックしたときに表示される断片がいくつかあります。アクティビティは最初に "fragment1"を示します。戻るボタンは前のフラグメントに戻りません

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

     preferences = getSharedPreferences("Settings", 0); 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 

     categories fragment = new categories(); 
     FragmentTransaction fragmenttransaction = getSupportFragmentManager().beginTransaction(); 
     fragmenttransaction.replace(R.id.frame,fragment,"fragment1"); 
     fragmenttransaction.commit(); 

    } 

私はこの活動内の他のフラグメントに移動し、私のデバイス上のボタンをタップするとバックの問題ではなく、戻って、前のフラグメントに行こうと、アプリがすぐに閉じています。あなたはあなたに断片化の追加ではないので、

@Override 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 

     } 

     if(getFragmentManager().getBackStackEntryCount() > 0){ 
      getFragmentManager().popBackStackImmediate(); 
     } 

     else{ 
      super.onBackPressed(); 
     } 

    } 

断片クラス

public class settings extends Fragment { 

    SharedPreferences preferences; 
    private EditText rangevalue; 
    private Button savebtn; 

    private int range = 0; 
public settings() { 

    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View v = inflater.inflate(R.layout.fragment_settings, container, false); 

     preferences = getActivity().getSharedPreferences("Settings",0); 
     rangevalue = (EditText)v.findViewById(R.id.rangeedittext); 
     savebtn = (Button)v.findViewById(R.id.savebutton); 

     rangevalue.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       range = Integer.parseInt(rangevalue.getText().toString()); 
      } 
     }); 


     savebtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       if (range == 0) 
       { 
        SharedPreferences.Editor editor = preferences.edit(); 
        editor.putInt("Range",2000); 
        editor.apply(); 
       } 
       else 
       { 
        SharedPreferences.Editor editor = preferences.edit(); 
        editor.putInt("Range",range); 
        editor.apply(); 
       } 
       Toast.makeText(getContext(), "Settings Saved", Toast.LENGTH_SHORT).show(); 
      } 

     }); 

     return v; 

    } 
+0

https://stackoverflow.com/a/17629477/5727285 .addToBackStack()を試してください。 – Hamza

答えて

0

そのを

は私が活動内部onBackPressed機能で「popbackstack」のようないくつかの方法を試してみましたが、それは同様に動作しません。 backStack、このマート.addToBackStack()を使用して、後で取り出す場合は、backStackでフラグメントを保存してください。

categories fragment = new categories(); 
     FragmentTransaction fragmenttransaction = getSupportFragmentManager().beginTransaction(); 
     fragmenttransaction.replace(R.id.frame,fragment,"fragment1"); 
     fragmenttransaction.addToBackStack().commit(); 
関連する問題