我有一個片段,打開一個新的活動。當用戶點擊後退按鈕時,如何將數據傳回給該活動的片段? 我試着創建一個新的Intent
,並把數據放在那裏,然後調用setResult()
,但Fragment
或FragmentActivity
都沒有在onActivityResult
中得到任何東西。我現在可以想到的唯一方法是通過靜態方法,但仍然想看看是否有適當的方法來做到這一點?當用戶點擊android中的後退按鈕時,如何將數據從活動發送到片段?
謝謝!
我有一個片段,打開一個新的活動。當用戶點擊後退按鈕時,如何將數據傳回給該活動的片段? 我試着創建一個新的Intent
,並把數據放在那裏,然後調用setResult()
,但Fragment
或FragmentActivity
都沒有在onActivityResult
中得到任何東西。我現在可以想到的唯一方法是通過靜態方法,但仍然想看看是否有適當的方法來做到這一點?當用戶點擊android中的後退按鈕時,如何將數據從活動發送到片段?
謝謝!
調用靜態函數和賦值不是一個合適的解決方案。你可以使用接口回調或者你可以使用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)
}
}
仍然不能得到startActivityForResult()的工作,所以我最終使用接口 – user1865027
我有開闢了一個新的活動
使用startActivityForResult()
代替startActivity()
我試圖創建一個新的Intent啓動活動,並把數據在那裏,然後片段調用setResult(),但Fragment或FragmentActivity在onActivityResult中都沒有任何東西。
如果您正在使用startActivityForResult()
那麼你完成那個Acivity後onActivityResult()
將被調用。
你可以'startActivityForResult()'從活動 –
,但我已經打後退按鈕的含義我想關閉掉該活動。是否有必要調用'startActivityForResult()'? – user1865027
使用'startActivityForResult()'然後'setResult'內部活動'onBackPressed()'.. –