2016-06-17 9 views
3

Presenteterという名前のコードが私のメインクラスで、質問に応じてFragmentを置き換えています。メインクラスでFragment's Spinnerイベントを使用するにはどうしたらいいですか?

public class Presenteter extends AppCompatActivity { 
    private final Questions question1Fragment = new Questions(); 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.present); 

FragmentTransaction ft=getSupportFragmentManager().beginTransaction(); 
     ft.setCustomAnimations(android.R.anim.fade_in,android.R.anim.fade_out); 

     ft.replace(R.id.flPersonalization, question1Fragment); 

     ft.commit(); 
} 

これは私のQuestionsクラスです。それはRESTサーバーからの質問を取得しています。すべての質問は、Spinnerに記載されています。私はあなたを混乱させないために、ここに書きませんでした。

public class Questions extends Fragment implements AdapterView.OnItemSelectedListener { 
    SearchableSpinner spinner; 

    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.question, container, false); 
    LinearLayout ln=(LinearLayout)view.findViewById(R.id.listLayout); 
      spinner=(SearchableSpinner)view.findViewById(R.id.spinner1); 
} 

は、最後に私は私のPresenterクラスにSpinnerさんonItemSelected()イベントを使用します。

どうすればいいですか? ありがとうございます。

答えて

2

あなたのFragmentにこのような何かを行うことができます:

Presenteter p = (Presenteter) getActivity(); 

// ... 

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
     p.yourMethod(); // call a method of your Presenteter class 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 

    } 
}); 
1

私はあなたの質問に回答されてうれしいですが、これを行うためのより良い方法があります。

Rxに精通している方は、これを行う方法の1つです。

Rxがあなたの紅茶でない場合、この種の通信を単純化するEventBusを使用することができます。 リンク: EventBus

わからない場合は、後者に行くことをおすすめします。

+0

ありがとう、私はアンドロイドではなく、ジュニオールでもない:)しかし、私はあなたが私に言ったそれらが好きです。私は彼らのアプリケーションの残りの部分を使用することを確信しています。 :) –

+0

私はあなたを助けてうれしいです。 EventBusは本当に時には救世主ですが、ますます学ぶにつれて、この状況を解決する他の方法があります。 – Marijan

+0

私はそう望む:)あなたの助けをもう一度感謝:) –

関連する問題