移动到其他活动时完成片段?

时间:2016-07-07 09:19:00

标签: android android-fragments android-activity

我有一个包含3 fragments的主要活动。在每个fragment我都有一个listView,点击它会被转移到一个新的活动。

在新的Activity中,我正在更改单击的列表视图内容,并使用intent转移回主要活动。

这将打开一个新的主Activity片段,当我按下后退按钮时,我再次返回之前打开的上一个Main Activity。

3 个答案:

答案 0 :(得分:0)

不使用startActivity,而是在片段中使用startActivityForResult,并使用onActivityResult从已启动的新Activity获取结果

在你的片段中你喜欢这个

static final int NEXT_ACTIVITY = 100;

//insert in listview on click
Intent intent = new Intent(context,Activity2.class);
intent.putExtra("key","value");//if needed
startActivityForResult(intent,NEXT_ACTIVITY);

@Override //*Note* you must override this method in you parent Activity in order to reflect the data inside your fragment
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode,resultCode,data);//while using inside fragment
switch(requestCode) {
case NEXT_ACTIVITY:
    if (resultCode == RESULT_OK) {
        Bundle res = data.getExtras();
        String result = res.getString("param_result");
        Log.d("FIRST", "result:"+result);
    }
    break;
}
}

在完成/ onBackpressed

时的新活动中
Bundle data = new Bundle();
data.putString("param_result", "Thanks Thanks");
setResult(RESULT_OK, data);
finish();

答案 1 :(得分:0)

对于片段,而不是finish();,您应该调用

getActivity().finish();

答案 2 :(得分:-1)

将活动的上下文保存在静态变量中,如下所示

 public class MainActivity extends AppCompatActivity {
        public static MainActivity mainActivity;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_staff_login);
            //finishing older loaded mainActivity 
            if(MainActivity.mainActivity!=null){
               MainActivity.mainActivity.finish();
            }
            mainActivity=this;

        }
    }

从其他活动中,您可以像这样完成旧活动

if(MainActivity.mainActivity!=null){
     MainActivity.mainActivity.finish();
   }