2016-06-17 4 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 클래스 SpinneronItemSelected() 이벤트를 사용하고 싶습니다.

어떻게하면됩니까? 미리 감사드립니다.

답변

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에 익숙하다면 그 방법이 있습니다.

Rx가 차 한잔이 아니라면,이 종류의 통신을 단순화하는 EventBus를 사용할 수 있습니다. 링크 : EventBus

확실하지 않은 경우 후자를 위해 제안 할 것입니다.

+0

정말 고맙습니다. 안드로이드는별로 좋지 않습니다. 쥬니 우어도 아닙니다.하지만 당신이 나에게 말했던 것을 좋아합니다. 나머지 애플 리케이션을 사용하게 될 것입니다. :) –

+0

내가 당신을 도왔다 니 기쁩니다. EventBus는 실제로 때로는 구원자입니다. 그러나 점점 더 많이 배울 때, 당신은이 상황을 해결할 다른 방법을 발견하게 될 것입니다. – Marijan

+0

나는 다시 한번 당신의 도움에 감사드립니다. :) –

관련 문제