我有一个包含3 fragments
的主要活动。在每个fragment
我都有一个listView
,点击它会被转移到一个新的活动。
在新的Activity
中,我正在更改单击的列表视图内容,并使用intent转移回主要活动。
这将打开一个新的主Activity片段,当我按下后退按钮时,我再次返回之前打开的上一个Main Activity。
答案 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();
}