2017-09-15 5 views
0

完全なフラグメントのライフサイクルを理解していない。選択したアイテムをフラグメントからアクティビティにパス

ケース:

Fragmentに移動しActivityからFrameLayoutをクリックして取り組んでいます。

問題:Fragment

は、2つのspinnersSubmitButton、両方spinner値を選択した場合、SubmitButtonのクリックは、バックにスピナーからそれらの値を表示する必要があります。しかし、私はそれをすることができません。

マイソリューション:

は私がIntentputExtras、その後getExtrasを使用しようとしましたが、私たちはFragmentであるとして、IntentFragmentのために仕事に行くのではありません。 Bundleも役に立たない。

P.S.良いFragmentのライフサイクルを理解している人が必要です。 stackoverflowや他のチュートリアルから多くの投稿を読んでください。私は何を意味するのか分かりません。

は、このようなeventBusあなたが

1)あなたの活動としてgetActivity()を鋳造することを行うと、特定のメソッドを呼び出し、パラメータを渡すことができ

+0

値を渡すための書き込みインターフェイス –

+0

フラグメント内にいるときは、コールバックを使用するか、 'getActivity()'または 'getContext()'を使ってアクティビティへの参照を取得し、アクティビティ – MatPag

+0

'android studio'から' Fragment'を作成すると、データをアクティビティに送信するために使用できるインターフェイスの例が表示されます。パッケージの右クリック - >フラグメント –

答えて

1

つの方法として、外部のライブラリを望んでいません。

public class MyActivity extends AppCompatActivity { 

    public void setData(String value){ 
     // do whatever with the data 
    } 
} 

public class MyFragment extends Fragment{ 

    public void someMethod(){ 
    ((MyActivity)getActivity).setData(your_data); 
    } 
} 

2)インタフェースを作成し、活動に値を渡します。

public class MyActivity extends AppCompatActivity implements SpinnerListener{ 

    @Override 
    public void onSpinnerItemSelected(String value){ 
     // do whatever with the data 
    } 

    public interface SpinnerListener { 
    void onSpinnerItemSelected(String value); 
    } 
} 

public class MyFragment extends Fragment { 

    private SpinnerListener spinnerListener; 

    @Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 
     if(context instanceOf MyActivity) 
      spinnerListener = ((MyActivity)context); 
    } 

    public void someMethod() { 
     if(spinnerListener != null) 
     spinnerListener.onSpinnerItemSelected(your_data); 
    } 
} 

注:安全な方法はインターフェイスを使用しています。

+0

アクティビティから私のフラグメントを呼び出せますが、フラグメントがアクティビティからどのように送信されますか?私は断片では分かりません – Zoffa

+0

私は例を待つつもりです。 –

+0

私はまだ問題を処理していません@Bhuvanesh Bs – Zoffa

関連する問題