0

我遇到了一些麻烦,我已经对这个问题进行了研究,但这对我没有帮助。

我有一个 Main.java 类,它是模板制作的片段分页视图。

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

我的片段 A 正在收集加速度计数据,将最后 120 条记录保存在 ArrayList 中。它还有带有 Series 对象的图表,我想从片段 B 访问这些对象。

这就是我想要做的:

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

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

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

如何访问这些字段?

4

3 回答 3

1

Greensy 的答案是一个有效的选择(我支持他),但您也可以避免在片段之间进行太多的 DataPassing,让 Activity 成为所有这些的管理者。

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

简单的例子:

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

那么 FragA 你必须创建该方法:

 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());
      }
 }

那有意义吗?

于 2013-02-25T15:37:41.300 回答
1

从片段调用

Fragment frag = getActivity().getFragmentManager()..findFragmentByTag("片段找到标签");

于 2013-02-25T15:05:39.867 回答
0

一种方法是使用您自己的Application 类并将您的存储ArrayList在其中

然后,您可以在应用程序的任何位置访问它,如果您有Context

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

请注意此解决方案,因为您ArrayList将在所有应用程序运行期间都还活着

于 2013-02-25T15:05:50.487 回答