2013-02-25 76 views
0

我遇到了一些麻烦,我已经完成了对这个问题的研究,但它没有帮助我。访问其他片段数据

我有一个Main.java类,它是模板制作页面查看片段。

我没有以任何方式修改它,除了getItem()方法现在返回我自己的片段。

我的片段A正在收集加速计数据,保存ArrayList中的最后120条记录。 它还具有图形绘制,与系列的对象,这是我想从片段B.访问

这就是我想做的事:

在B片段用户按下按钮“记录数据”

这导致片段A布尔型字段“recordingOn”改变为true

现在fragmentA onSensorChange方法,检查“recordingOn”之后,如果这是真的,将数据传递给一个ArrayList即在B片段

一个字段

如何访问这些字段?

回答

1

从片段呼叫

片段FRAG = getActivity()getFragmentManager().. findFragmentByTag( “片段找到标签”)。

0

一个办法做到这一点是使用自己的Application class和存储您在那里

ArrayList

然后,您可以访问它在应用程序的任何时候,如果你有一个Context

ArrayList<AccelerometerData> myAccelerometerData = ((MyApplication) mContext.getApplicationContext()).getAccelerometerData(); 

请关注此解决方案,因为您的ArrayList将在所有应用程序运行期间保持活跃状态​​

1

绿色答案是一个有效的选项(我向他投票),但您也可以不要这样做muc h片段之间的数据通过并让Activity成为所有这些的管理器。

为此,您可以在片段中创建公共方法和接口,并让/强制活动实现接口。

简单的例子:

public class Act extends Activity implements OnClickListener{ 
    @Override 
    OnClick(View v){ 
     if(v.getId()==R.id.btn_recordData){ 
      fragA.startRecording(); 
     } 
    } 
} 

然后弗拉加必须创建一个方法:

public class FragA extends Fragment{ 
    private boolean isRecording 
    public void startRecording(){ isRecording = true; // also init the sensor stuff } 
    public void stopRecording() { isRecording = false; // also stop the sensor stuff } 
} 

然后FragB您可以:

public class FragB extends Fragment{ 
     onCreateView(...){ 
      // initialise all the views and find the button, let's call it Button btn; 
      btn.setOnClickListener((OnClickListener)getActivity()); 
     } 
} 

这是否合理?