1

我正在尝试实现一个相当基本的 UI。

我有一个活动,其中有一个片段,它执行 HTTP 获取并更新片段中的一些值。

这很好用,现在我想要一个菜单​​来刷新它 - 菜单包含在 Activity 中。

我遇到的问题是我不确定如何处理方法调用。基本上,当我从菜单处理程序更新片段时,我发现片段中的 getActivity() 返回 null 。

所以我在 Activity 中有这段代码

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    try {
        handler = new GetData();
    } catch (Exception e) {
        Log.e("FFF", "Exception: " + Log.getStackTraceString(e));
    }

}

GetData() 是我的活动 java 类

现在在我的 onOptionsItemSelect 事件中,如果我使用上面的处理程序(使处理程序成为全局变量)它可以工作,但 getActivity() 在片段中为空。

在 onOptionsItemSelected 事件中调用时,使用下面的代码返回 null

GetData handler = (GetData) getFragmentManager().findFragmentById(R.layout.verticalwetherlayout);

有没有解释这部分的教程?或者我只是做错了?

克里斯

4

1 回答 1

0

我发现了我的问题。

我使用的是片段的实际 ID,而不是活动中定义的片段实例的 ID。

所以片段的 id 是 R.layout.verticalwetherlayout

但活动中片段的实际 ID 是 GetData1

<fragment
        android:id="@+id/GetData1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        class="com.example.testapp1.GetData" />

克里斯

于 2012-10-17T06:39:38.753 回答