我有一个在片段和容器活动之间来回发送一些数据的问题,我成功了。令我困惑的是将我的数据从片段发送到活动,起初我实现了OnResume()
,OnStop()
并通过意图发送数据并创建了无限循环,因此我将其删除。然后我做了setRetainInstance(true)
并且它起作用并且给了我想要的行为。
我的问题是我的数据是如何真正发送的以及片段生命周期中的位置?
答案 0 :(得分:1)
您也可以使用ARGV
,使用Interface
EventBus
,或使用LocalBroadcastManager
以及某种形式的Activity
开始新Intent
来实现此目的。 flag
已传入其extras
捆绑包或其他内容。
以下是使用界面的示例:
1。将功能sendDataToActivity()
添加到界面(EventListener
)。
//EventListener.java
public interface EventListener {
public void sendDataToActivity(String data);
}
2。在MainActivity
。
// MainActivity.java
public class MainActivity extends AppCompatActivity implements EventListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void sendDataToActivity(String data) {
Log.i("MainActivity", "sendDataToActivity: " + data);
}
}
3。在MyFragment
和attach
中创建一个监听器到Activity
。
4。最后,使用listener.sendDataToActivity("Hello World!")
调用函数。
// MyFragment.java
public class MyFragment extends Fragment {
private EventListener listener;
@Override
public void onAttach(Activity activity)
{
super.onAttach(activity);
if(activity instanceof EventListener) {
listener = (EventListener)activity;
} else {
// Throw an error!
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_my, container, false);
// Send data
listener.sendDataToActivity("Hello World!");
return view;
}
@Override
public void onDetach() {
super.onDetach();
listener = null;
}
}
希望这会有所帮助〜