2015-10-06 54 views
0

我有一個片段,打開一個新的活動。當用戶點擊後退按鈕時,如何將數據傳回給該活動的片段? 我試着創建一個新的Intent,並把數據放在那裏,然後調用setResult(),但FragmentFragmentActivity都沒有在onActivityResult中得到任何東西。我現在可以想到的唯一方法是通過靜態方法,但仍然想看看是否有適當的方法來做到這一點?當用戶點擊android中的後退按鈕時,如何將數據從活動發送到片段?

謝謝!

+0

你可以'startActivityForResult()'從活動 –

+0

,但我已經打後退按鈕的含義我想關閉掉該活動。是否有必要調用'startActivityForResult()'? – user1865027

+0

使用'startActivityForResult()'然後'setResult'內部活動'onBackPressed()'.. –

回答

1

調用靜態函數和賦值不是一個合適的解決方案。你可以使用接口回調或者你可以使用startActivityForResult()方法。

接口回調基本概念;

public class YourActivity extends Activity{ 

private MyListener mFragmentCallbackListener; 

    public YourActivity(MyListener listener){ 
    mFragmentCallbackListener = listener; 
    } 

@Override 
public void onBackPressed(){ 

if(mFragmentCallbackListener != null){ 
    mFragmentCallbackListener.updateFragment(String data); 
    } 
} 

public interface MyListener{ 
    void updateFragment(String data) 
} 
} 
+0

仍然不能得到startActivityForResult()的工作,所以我最終使用接口 – user1865027

0

我有開闢了一個新的活動

使用startActivityForResult()代替startActivity()

我試圖創建一個新的Intent啓動活動,並把數據在那裏,然後片段調用setResult(),但Fragment或FragmentActivity在onActivityResult中都沒有任何東西。

如果您正在使用startActivityForResult()那麼你完成那個Acivity後onActivityResult()將被調用。

相關問題