2016-12-17 1 views
0

私はAmazon Fire TVアプリケーションを作成しており、新しいプロジェクトを開始してAndroid TVオプションを選択したときにAndroid Studioによって既に提供されているリソースを使用することに決めました。このプロジェクトでは、主な活動はactivity_main.xmlするコンテンツビューを設定し、activity_main.xmlはそうのようなMainFragmentクラスを初期化します。私のMainActivityでフラグメントがレイアウトファイル(プログラムではない)で初期化されたときに、アクティビティからフラグメントに変数を渡す方法はありますか?

<?xml version="1.0" encoding="utf-8"?> 
<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main_browse_fragment" 
    android:name="com.morega.amazonfiretv.mota.ui.MainFragment" android:layout_width="match_parent" 
    android:layout_height="match_parent" tools:context=".MainActivity" tools:deviceIds="tv" 
    tools:ignore="MergeRootFrame" /> 

、私は、ネットワークとの設定からいくつかのリソースの負荷よそれらをいくつかのメンバ変数に変換します。これらのメンバ変数は、パブリック静的変数として定義されています(私は、このアプリケーションをタブレット版からビルドしています。したがって、同じバックエンドを使用し、あまり変更を加えないでください)。 MainFragmentクラスからこれらのメンバー変数にアクセスするにはどうすればよいですか?私はまだOOPを学んでいて、静的変数と非静的変数の違いを完全に理解していないので、私の無知を許します。あなたの活動で

+0

以下の回答に記載されている方法を使用することも、インターフェイスを使用することもできます。フラグメントにインターフェイスクラスを作成します。あなたの活動にそれを実装させてください。フラグメントからアクティビティーへ、インターフェースを介して必要な値を渡すことができます。このアプローチを使用して質問があれば教えてください。 :) –

答えて

1

、あなたが使用することができます。

MainFragment mainFragment = (MainFragment) getSupportFragmentManager().findFragmentById(R.id.main_browse_fragment) 

だから、XMLによって膨張され、あなたのフラグメントへの参照を持っています。

次に、あなたがそうのようなあなたのフラグメントにパブリック関数を作成することができます。

public void setData(String data) 

、あなたがネットワーク要求を完了したとき、あなたの活動からそれを呼び出します。

mainFragment.setData(data); 

これは、すべての変数を適切な方法で処理する必要があります。

+0

getSupportFragmentmanager()の「解決できないメソッド」メッセージが表示されるのはなぜですか? MainActivityにandroid.app.Fragmentパッケージをインポートしました。 –

+0

getSupportFragmentManager()* –

+0

MainActivityはActivityを拡張していますが、MainFragmentはBrowseFragment(Android TVアプリで使用されるleanback.appパッケージのクラス)を拡張していますが、今は私の活動に関するいくつかの情報があります。 –

関連する問題