私はあるフラグメントから別のフラグメントにビットマップを渡そうとしています-そして、この投稿をガイドとして使用しています:
私が問題を抱えているのは、getIntent()を使用して受信アクティビティフラグメントにあります。メソッドを認識しません。フラグメントでgetIntent()を使用することはできないと言っているいくつかの投稿があります...しかし、方法があるはずです。ホストアクティビティにコードを配置する必要がありますか?
ここに私がしようとしているものがあります:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String filename = getIntent().getStringExtra("image");
try {
FileInputStream is = this.openFileInput(filename);
imageBitmap = BitmapFactory.decodeStream(is);
is.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Fragments
でgetIntent()
を使用できますが、最初にgetActivity()
を呼び出す必要があります。 getActivity().getIntent().getExtras().getString("image")
のようなものが機能します。
データを渡すことができないということではなく、やりたくないということです。
フラグメントから ドキュメント :
多くの場合、たとえばユーザーイベントに基づいてコンテンツを変更するために、1つのフラグメントが別のフラグメントと通信する必要があります。フラグメント間の通信はすべて、関連付けられたアクティビティを通じて行われます。 2つのフラグメントが直接通信することはありません。
Fragment
のドキュメントを見ると、これを行う方法を説明しているはずです。
インテントデータを取得するには、_Fragment's
_メソッド getArguments()
を呼び出して、Bundle
を追加で返す必要があります。
次のように、setArguments()
とgetArguments()
を使用してFragment
でこれを実現することもできます。
_MyFragment fragment = new MyFragment();
Bundle bundle = new Bundle();
bundle.putString("image", fileName);
fragment.setArguments(bundle);//Here pass your data
_
フラグメントクラス内ではありません。たとえば、onCreate()
またはonCreateView()
内では、以下を実行します。
_String fileName = this.getArguments().getString("image");
_
これも役立つことを願っています