2017-05-01 8 views
1

こんにちは私は1つのボタンを持つフラグメントを作成しました。フラグメントに含まれるアクティビティに基づいてインテントを実行します

runBtn.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
if (type == 0){ 
     Intent sendToMain = new Intent(getActivity(), MainActivity.class); 
     sendToMain.putExtra("newStory", story); 

    } 
    if (type ==1){ 
     Intent reviewStoryIntent = new Intent(getActivity(),storyReviewActivity.class); 
     reviewStoryIntent.putExtra("Story", story); 
    } 

     } 
    }); 

:このことから生じる問題は、フラグメントが同じ意思

にOnclickを(Type変数は、それが実行すべき活動であるとのonclickに実装されていない、これは動作しません)やるということですフラグメントがどのアクティビティに配置されているかを区別する方法はありますか?

答えて

0

私は別のアプローチを考えています。あなたの活動がインテントを扱わないようにするにはどうすればよいですか?

あなたのアクティビティはコールバックメソッドを実装しており、そのフラグメントはそれを呼び出すので、すべてのアクティビティはそのインテントが指示する場所を知ります。

希望します。

2

あなたのフラグメントで以下のようにあなたのさまざまなアクティビティを確認することができます。

if(getActivity() instanceof YourFirstActivity) // type == 0 
{ 
    // Do your stuff here for First Activity 

}else if(getActivity() instanceof YourSecondActivity) // type ==1 
{ 
    // Do your stuff here for Second Activity 
} 
+0

はこの作品をありがとう!しかし、現在のアクティビティからエクストラオブジェクトを配置することも可能です。ストーリーオブジェクトを "yourFirstActivity"または "YourSecondActivity"に渡す必要があります。@pRaNaY – Pr0tonion

+0

いいえ、あなたは現在のアクティビティにputExtraを渡すことはできません。ターゲットインテントアクティビティにputExatraを渡すことができます。あなたの現在のアクティビティが 'YourFirstActivity'であれば、' putExtra'で他のアクティビティのインテントを開始することができます。あなたのコードを考えてみましょう。あなたの現在のアクティビティが 'YourFirstActivity'(type == 0)であれば、' sendToMain'インテントを必要に応じて使うことができます。現在のアクティビティが 'YourSecondActivity'(type == 1)の場合、' reviewStoryIntent'インテントを使用することができます。 – pRaNaY