[英]Android - How to send data from main activity to loaded fragment
I want to have a function
that is constant between all my Fragments
placed in MainActivity
. 我想要一个在
MainActivity
放置的所有Fragments
之间恒定的function
。 I am not sure how to pass the data to the active
Fragment
since the Fragment
will be unaware of the function being run. 我不确定如何将数据传递给
active
Fragment
因为Fragment
不会意识到正在运行的功能。
I have tried creating an interface
in the MainActivity
and have the Fragment
implement
the MainActivity.OnDataPass
. 我尝试在
MainActivity
创建一个interface
,并让Fragment
implement
MainActivity.OnDataPass
。 but not sure how to initiate the interface in the MainActivity
I keep getting a NullPointerException
. 但不确定如何在
MainActivity
初始化接口,但我一直收到NullPointerException
。
In my main activity: 在我的主要活动中:
public class Mainactivity extends FragmentActivity{
OnDataPass dataPasser;
BroadcastReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String str = intent.getStringExtra("data");
dataPasser.onDataPass(str);
}
};
}
public interface OnDataPass {
public void onDataPass(String data);
}
}
In my Fragment 在我的片段
public class Storage extends Fragment implements Mainactivity.OnDataPass{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
mrootview = (ViewGroup) inflater.inflate(R.layout.storage, container, false);
return mrootview;
}
@Override
public void onDataPass(String data) {
Log.v(TAG, data);
}
}
am I even on the right track or is there a better way to send data to the fragment? 我是否在正确的轨道上,还是有更好的方法将数据发送到片段?
You are pretty far already: 您已经很远了:
public class Mainactivity extends FragmentActivity{
OnDataPass dataPasser;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//When you create your fragment, keep a reference of it in the dataPasser variable
dataPasser = /* your storage fragment class or any other fragment that implements onDataPass*/
......
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String str = intent.getStringExtra("data");
dataPasser.onDataPass(str);
}
};
}
public interface OnDataPass {
public void onDataPass(String data);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.