我正在使用android studio片段样本。我的目标是使用EditText et1
中的代码在fragment1
中设置fragment2
的值。另外,我想使用ListView lv
中的代码更新fragment1
中的fragment2
。
该示例执行ARG_SECTION_NUMBER
的一些来回发送,但这只是文本而不适用于列表视图。什么不起作用是这个
private View rvza, rvl, rvea;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rvza = inflater.inflate(R.layout.fragment_zeit_und_aktion, container, false);
rvl = inflater.inflate(R.layout.fragment_liste, container, false);
rvea = inflater.inflate(R.layout.fragment_eintragen_und_aendern, container, false);
....
}
...
Button btnNeu = (Button) rvea.findViewById(R.id.btnNeu); //this line is somewhere...
这也不起作用
new MainActivity().myfunction((ListView)rvl.findViewById(R.id.listView));
它在
处提供Attempt to invoke interface method 'int android.widget.ListAdapter.getCount()' on a null object reference
public void myfunction(ListView lv)
{
int count = lv.getAdapter().getCount();
那么如何在具有一个父活动的片段之间进行通信?有辅助班吗?
答案 0 :(得分:0)
如果要访问任何可供多个子项使用的方法或变量,请创建父活动单例并访问子片段中所需的方法或变量。此外,如果您想访问来自anther的片段内的任何内容,请不要忘记在父活动中创建和初始化该片段的对象,并进一步使用该对象在片段管理器中添加或替换片段。通过这种方式,您可以通过父活动访问每个孩子
如何制作单身人士?见下面的例子。
public class SingletonExample {
// Static member holds only one instance of the
// SingletonExample class
private static SingletonExample singletonInstance;
// SingletonExample prevents any other class from instantiating
private SingletonExample() {
}
// Providing Global point of access
public static SingletonExample getSingletonInstance() {
if (null == singletonInstance) {
singletonInstance = new SingletonExample();
}
return singletonInstance;
}
public void printSingleton(){
System.out.println("Inside print Singleton");
}
}
答案 1 :(得分:0)
Android开发人员有关于如何在片段之间进行通信的官方指南: https://developer.android.com/training/basics/fragments/communicating.html
基本上,你的片段A将通过一个接口与活动对话,活动将查找片段B并在片段上调用一些方法。
但是,如果你想更多地解耦,你可以使用像otto event bus这样的东西: http://square.github.io/otto/ 它可用于在应用程序的不同部分之间进行通信,而无需处理底层细节。