2017-05-01 1 views
0

하나의 활동 및 3 개의 단편이 있습니다. 응용 프로그램이 시작되고 조각 1이 표시됩니다. 나는 버튼을 클릭한다. 조각은 다음과 같은 인터페이스를 통해 작업과 통신 및 조각 2 출시 :하나의 인터페이스로 여러 단편 관리

public OnClickedListener listener; 

static interface OnClickedListener{ 
    public void buttonClicked(View v); 
} 

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 

    Activity a; 

    if (context instanceof Activity){ 
     a=(Activity) context; 
     this.listener = (OnClickedListener)a; 
    } 
} 

을 ...

playBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { listener.buttonClicked(v); } });

내 MainActivity가 Fragment1.OnClickedListener를 구현, 데이터를 수신하고 시작 조각 2.

이제 저는 조각 2에 있습니다. 단추를 클릭하고 조각 3을 ​​실행하고 싶습니다. 조각 2에서 다른 인터페이스를 구현하여이를 수행 할 수 있다는 것을 알고 있습니다. "Hey Launch Fragment 3"이라고 말하십시오. 그래서 지금 내 활동은 모든 괜찮아요하지만이 전 20 개 조각을 가지고 있다고하자이

MainActivity implements Fragment1.OnClickedListener,Fragment2.OnClickedListener

것 같습니다. 나는 나의 주요 활동에서 20 개의 인터페이스를 구현하기를 원하지 않는다. 하나의 인터페이스를 생성하고 사용하여 각 부분과 활동간에 통신하는 방법이 있습니까? 어떻게 구현 될까요? 고맙습니다.

답변

0

하실 수 있습니다. 전용 인터페이스를 생성 (난 당신이 별도의 파일을 생성하는 것이 좋습니다) : 당신의 Activity 당신이 의지

playBtn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // You can't use just "this", pass the class instance. 
     listener.buttonClicked(MyFragmentClassName.this, v); 
    } 
}); 

:

interface OnClickedListener { 
    void buttonClicked(Fragment fragment, View v); 
} 

onButtonClicked() 방법은 또한 Button 클릭하는 Fragment 인스턴스를 받아 들인다 있다 :

public class MainActivity extends Activity implements MainActivity.OnClickedListener { 
    @Override 
    public void buttonClicked(Fragment fragment, View v) { 
     // Check if the Fragment instance, or tag, or the info that you use to recognize it. 
    } 
} 
+0

조금 혼란 스럽습니다. OnClickedListener라는 별도의 인터페이스를 만들었습니다. 나는 그것을 Fragment1에서 확장하고 버튼을 클릭 할 때 데이터를 가져올 수 있습니다. listener.buttonClicked (MyFragmentClassName.this, v); 어떻게하면 저의 주요 활동에 어떻게 참여할 수 있습니까? 위의 내용은 내 기본 활동이 다음과 같아야한다고 썼습니다. public class MainActivity extends Activity MainActivity.OnClickedListener를 구현합니다. 나는 당신이 여기에서 무엇을 구현하는지 확신하지 못한다. –

+0

@mikhail이 말했듯이 인터페이스를 다른 파일에 선언하거나 MainActivity에 중첩하여 선언하십시오. –

0

하나의 중첩 된 인터페이스를 중첩 된 인터페이스 대신 활동 또는 별도의 파일로 작성하십시오. 단편에서.

관련 문제