2014-04-22 57 views
0

點擊片段內的按鈕,是否可以關閉同一活動中的兩個片段,並將片段的結果返回給另一個活動?一個片段正在等待輸入,而另一個片段具有供用戶查看並且不期待輸入的信息。關閉按鈕單擊並返回結果的片段?

此外,我的代碼在活動中使用片段之前工作,但當單擊意圖轉到包含片段的活動(NextActivity.class)時,片段不再顯示......是否發生知道爲什麼片段不出現?

下面是一些下面

從原來的活動我的一塊代碼:

public class MessageList extends ListActivity { 

    private void createMessage() { 
    Intent i = new Intent(this, NextActivity.class); 
    startActivityForResult(i, ACTIVITY_CREATE); //this line is incorrect, right? 
    }} 

下面是一個片段類的一個片段:

 public class MessageEditorFragment extends Fragment { 

     confirmButton.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View view) { 
      getActivity().finish(); 
     }} 

而且,這裏是活動持有這些片段的類,只是想要看一看:

public class NextActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_next); 

    ActionBar actionBar = getActionBar(); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    Tab one = actionBar.newTab().setText("Message Editor"); 
    Tab two = actionBar.newTab().setText("Information"); 

    one.setTabListener(new MyTabListener(new MessageEditorFragment())); 
    two.setTabListener(new MyTabListener(new InformationFragment())); 

    actionBar.addTab(one); 
    actionBar.addTab(two); 
    } 
    public class MyTabListener implements TabListener{ 
    Fragment fragment; 

    public MyTabListener(Fragment f){ 
     fragment = f; 
    }}} 

我深深感謝大家的幫助!請讓我知道如果你需要看到更多的代碼以及..謝謝:)

回答

0

Activity通過調用finish破壞,無論是fragmentsdestroyed/closed

因此,在finishActivity之前,您可以將值傳遞給啓動它的Activity

當您啓動Activity,你需要啓動ActivityResult,從Fragment/Activity

返回回結果數據在你Activity聲明一個整數請求代碼

int FRAGMENT_REQUEST_CODE = 1000; 

啓動活動,根據你的邏輯

Intent intent = new Intent(this,MainActivityEx.class); 
startActivityForResult(intent, FRAGMENT_REQUEST_CODE); 

添加回調方法onActivityResult接收結果

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == FRAGMENT_REQUEST_CODE) { 
     if (resultCode == RESULT_OK) { 

      TextView textView = (TextView)findViewById(R.id.textView1); 
      textView.setText(data.getExtras().getString("DATA")); 
     } 
    } 
} 

現在。在你的片段,當你關閉兩個Fragments,你也可以傳遞數據返回給調用者Activity

Intent intent = new Intent(); 
intent.putExtra("DATA","Hai"); 
getActivity().setResult(Activity.RESULT_OK,intent); 
getActivity().finish(); 
+0

感謝您的答覆!嗯,出於某種奇怪的原因,我仍然無法得到片段顯示......但是這是朝正確方向邁出的一步,因爲它不再崩潰。現在,當我點擊添加新消息時,列表活動再次被調用。有任何想法嗎??我應該提供更多的代碼嗎?如果是這樣,在什麼文件? – webhoodlum

+0

這可能是不同的問題,我會建議創建一個新的問題 – Libin

+0

是的你是對的,謝謝我會的。一旦我找出其他問題,我會再次嘗試您的代碼 – webhoodlum