【问题标题】:Navigation Drawer Activity move from fragments to activities and returnNavigation Drawer Activity 从 Fragment 移动到 Activity 并返回
【发布时间】:2018-11-03 05:26:32
【问题描述】:

我有一个navigation drawer activityfragments,我会将每个fragment 发送到activity。如果我选择菜单的选项 3,即 fragment,我会遇到问题,这会将我发送到 activity,但是当我使用“后退”按钮返回时,它会将我发送到选项 1,我想要的是我返回选项 3。 我怎样才能改变这个? 我试图通过parentActivity 做到这一点,但它没有用 谢谢。

我的navigation drawer activitywithfragments

当我点击按钮时,它会将我发送到activity,就是这个 在activity 中,我有一个toolbar 要返回,我想要返回选项3 而不是1。

我需要在我的代码中做什么或我可以放置什么?

我的片段代码选项 3

public class Mis_Aliados extends Fragment {

Button boton;

public Mis_Aliados() { }


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

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

    boton=view.findViewById(R.id.buton);

    boton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent intent = new Intent(getActivity(), ActividadEx.class);
            startActivity(intent);
        }
    });


    return view;
}

}

我的activity 代码

public class ActividadEx extends AppCompatActivity {

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

    Toolbar toolbarback=findViewById(R.id.include);
    setSupportActionBar(toolbarback);
    getSupportActionBar().setTitle("Activity");
    ActionBar actionBar=getSupportActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);


}
}

【问题讨论】:

  • OK.. 显示您的按钮片段代码。
  • 这是我编辑问题的代码
  • ActividadEx上按返回按钮时显示您的代码
  • 好的先生,我已经把它 ActividadEx

标签: android android-fragments android-activity navigation-drawer


【解决方案1】:

在您的ActividadEx 中添加此方法以处理工具栏后退按钮按下

我额外添加了 1 个意图,以确保您在返回导航抽屉活动时想要打开选项 3

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
        case android.R.id.home:
            Intent intent = new Intent(this, NavgationDrawerActivity.class);
            intent.putExtra("openOption3", true);
            startActivity(intent); 
    }

    return super.onOptionsItemSelected(item);
}

在 onCreate() 内的 NavigationDrawerActivty 上

您可以检查 Bundle 是否有数据。如果它为空,您可以打开 Option1 片段。

如果有数据检查它。并打开 Option3 片段。

    Bundle bundle = getIntent().getExtras();
    if (bundle != null) {
        if (bundle.getBoolean("openOption3", false)) {
            //Use Fragment Transaction to Open Option 3 Fragment
        } else {
            //Open Option 1 Fragment Or any other Fragment
        }
    } else {
        //Open Option 1 Fragment Or any other Fragment
    }

如果您有任何疑问,请随时发表评论。

【讨论】:

  • 感谢您提供的代码先生,我已经按照您所说的进行了检查,但我仍然发送到选项 1。我是这方面的初学者,所以我真的不知道还能做什么。
  • 如果您添加了 ActividadEx 的父活动。去掉它。并尝试
  • 我已经检查过了,我没有 parentActivity,它继续做同样的事情。
  • @CarlosMario 你在ActividadEx 中添加了onBackPressed() 吗?
猜你喜欢
  • 2021-03-27
  • 1970-01-01
  • 1970-01-01
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
相关资源
最近更新 更多