当前位置: 首页 > 知识库问答 >
问题:

Android-活动和返回的片段

时衡虑
2023-03-14

在Android中,当我们用一个新的片段替换容器视图时,我们可以使用replace()和addToBackStack(),因此按下back按钮就可以转到上一个片段。

但如果出现以下情况怎么办:

在Activity1中,我可以按下back按钮从fragment2转到fragment1。但当fragment2启动另一个活动时,从Activity2按下back按钮,它会将我带到Activity1中的fragment1。如何使从Activity2按下的back按钮返回到Activity1中的fragment2?

代码

// In Activity1 - starts with a ListFragment
@Override
protected void onResume() {
    super.onResume();

    getFragmentManager().beginTransaction()
            .replace(R.id.container, ListFragment.newInstance(0))
            .commit();
}

// In Activity1 , each item in list replaces the container view 
// with new fragment
@Override
public void onItemSelected(int position) {

    if(position == 0) {

        getFragmentManager().beginTransaction()
                .replace(R.id.container, Example1_Fragment.newInstance(0))
                .addToBackStack(null)
                .commit();

    }
   ....
 }

 // In Example1_Fragment

public class Example1_Fragment extends Fragment {

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

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

    Button btnIntent = (Button) view.findViewById(R.id.btnIntent);
    btnIntent.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent intent = new Intent();
            intent.setAction("com.android.test2.app.example1_action");
            startActivityForResult(intent,1);
        }
    });

    return view;
}

// this is why I want to come back to Example1_Fragment - 
// the activity I start has to send a result back to
// the Example1_Fragment, but on back button, it takes me
// back to the ListFragment, and I cannot take any UI
// action (change to UI) in Example1_Fragment, as the
// ListFragment gets displayed - the onActivityResult of
// Example1_Fragment does get called

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if(requestCode == 1 && resultCode == Activity.RESULT_OK){

             // do something
    }
}

共有1个答案

章景同
2023-03-14

不要替换onResume()回调中的Fragment1,当您回到activity1时总会调用这个方法,请在onCreate()回调中进行。

 类似资料:
  • 我在活动C中有四个片段,它们的行为就像标签一样。我必须从一个片段转到一个新的活动X。现在我想回到从活动X到片段的片段。 这是我的主要活动 '公共类MainInterface扩展了ActionBarActivity{ } ' 下面是活动视图中的公共类讨论。onclick侦听器{ ###

  • 我正在建立一个简单的应用程序,我想从片段回到物理按钮的活动。我该怎么做?我试图杀死碎片,但它不起作用。

  • 我有一个由一个活动和几个片段组成的应用程序,由谷歌重新指挥。其他细节在这里。我想保持一个菜单静止和切换我的碎片在容器在中心。 当我启动该活动时,它会初始化一个变量,如代码所示。 但是,当我在fragment onCreate中使用这个变量()时,活动中的绑定行会因,如下面的logcat所示 下面是完整的logcat,我们可以看到第二个sout丢失了,但在这一点上没有抛出错误。

  • 在为手机和平板电脑设计时,在应用程序中使用片段而不是活动的是什么? 我们是不是应该有手机的活动和平板电脑的碎片。除了使之外,手机的碎片还有什么好处吗? android开发网站http://developer.android.com/guide/components/fragments.html在电话上说,这些片段被分成那么使用这些片段有什么意义呢?

  • 我即将制作我的第一个Android应用程序,我目前正在阅读有关活动和片段的信息。我打算使用Lollipop抽屉菜单功能在我的应用程序中加载不同功能的不同屏幕。像设置、关于、添加新x、浏览x等。我的导航抽屉应该为每个项目加载不同的活动单击还是加载新片段? 我所有的屏幕都有相同的风格,但内容明显不同。 如果我加载一个新活动,我是否会将导航抽屉“丢失”到一边?或者它是否始终存在,因为我希望它可以从应用程

  • 在profileActivity.java中有以下代码: ………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………