2016-07-07 105 views
0

我有一個主要活動,包含3 fragments。在每個fragment我有一個listView,點擊它被轉移到一個新的活動。在移動到其他活動時完成碎片?

在新Activity,我改變被點擊列表視圖的內容和使用意圖轉移回主要活動。

這將打開一個新的主要活動片段,當我按後退按鈕,我再次回到以前打開之前的主要活動。

+0

調用'getActivity()。完成()'你的片段 –

+0

可能重複啓動新的活動的意圖後[完成從當前活動片段](http://stackoverflow.com/questions/7907900/finishing-current-activity-from-a-fragment) – Ironman

回答

-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(); 
    } 
0

而不是使用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();