1

かなり基本的な UI を実装しようとしています。

アクティビティがあり、その中に HTTP Get を実行してフラグメント内のいくつかの値を更新するフラグメントがあります。

これで問題なく動作します。これを更新するメニューが必要です。メニューはアクティビティに含まれています。

私が抱えている問題は、メソッド呼び出しの処理方法がわからないことです。基本的に、メニューハンドラーから更新すると、フラグメント内の getActivity() が null を返すことがわかりました。

だから私はアクティビティにこのコードを持っています

@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()がnullです。

以下のコードを使用すると、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 に答える