我有一個主要活動,包含3 fragments
。在每個fragment
我有一個listView
,點擊它被轉移到一個新的活動。在移動到其他活動時完成碎片?
在新Activity
,我改變被點擊列表視圖的內容和使用意圖轉移回主要活動。
這將打開一個新的主要活動片段,當我按後退按鈕,我再次回到以前打開之前的主要活動。
我有一個主要活動,包含3 fragments
。在每個fragment
我有一個listView
,點擊它被轉移到一個新的活動。在移動到其他活動時完成碎片?
在新Activity
,我改變被點擊列表視圖的內容和使用意圖轉移回主要活動。
這將打開一個新的主要活動片段,當我按後退按鈕,我再次回到以前打開之前的主要活動。
保存活動的靜態變量上下文這樣
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();
}
而不是使用startActivity使用startActivityForResult在你的片段,並onActivityResult到獲得新的活動,你已經開始
在您的片段結果做這樣
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();
調用'getActivity()。完成()'你的片段 –
可能重複啓動新的活動的意圖後[完成從當前活動片段](http://stackoverflow.com/questions/7907900/finishing-current-activity-from-a-fragment) – Ironman