2014-05-11 5 views
0

저는 Android에 익숙하지 않아 유연한 단편을 사용하여이 문제가 있습니다. RegactactivityFragment라는 mainActivity 및 Fragment라는 액티비티가 있습니다.유연한 단편화 된 버튼을 클릭하면 작동하지 않습니다

주요 활동에 단편을로드하지만 단편 버튼을 클릭하면 앱이 닫힙니다. 이 일부 내 registerActivityFragment.java의 일부

public class RegisterActivityFragment extends Fragment { 


public interface OnButtonsClicked { 

    public void onRegisterClicked(); 
    public void onNextTimeclicked(); 
} 
OnButtonsClicked buttonClickListener ; 

    //some codes 

    public void onAttach(Activity activity) { 
     super.onAttach(activity); 

     // This makes sure that the container activity has implemented 
     // the callback interface. If not, it throws an exception. 
     try { 
      buttonClickListener = (OnButtonsClicked) activity; 
     } catch (ClassCastException e) { 
      throw new ClassCastException(activity.toString() 
        + " must implement OnButtonsClicked Functions"); 
     } 
    } 


public void clickRegister(View view) 
{ 


    buttonClickListener.onRegisterClicked(); 
} 
public void clickNextTime(View view) 
{ 

buttonClickListener.onNextTimeclicked(); 
} 



} 

이며, 이것은 당신이 이런 식으로 onClickListner 설정 RegisterActivityFragment 클래스의 방법을 onCreateView 오버라이드 (override) 할 필요가 내 MainActivity.java

public class MainActivity extends ActionBarActivity implements RegisterActivityFragment.OnButtonsClicked { 

RegisterActivityFragment registerFragment= new RegisterActivityFragment(); 
@Override 
public void onCreate(Bundle savedInstanceState){ 

    //adding Fragment to activity 



} 

    //implementing the interface 
@Override 
public void onRegisterClicked() { 
    // TODO Auto-generated method stub 
    Toast toast = Toast.makeText(MainActivity.this,"asd",Toast.LENGTH_LONG); 
    toast.setGravity(Gravity.CENTER,0,0); 
    toast.show(); 
} 

@Override 
public void onNextTimeclicked() { 

    Toast toast = Toast.makeText(MainActivity.this,"asd",Toast.LENGTH_LONG); 
    toast.setGravity(Gravity.CENTER,0,0); 
    toast.show(); 

} 

}

답변

0

입니다

private Button foo; // as globle var 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 
View view = inflater.inflate(R.layout.fragment_rssitem_detail, 
    container, false); 
foo = view.findViewByid(R.id.foo); // button id 
foo.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) 
    { 
     OnButtonsClicked.onRegisterClicked(); 
    } 
}); 
return view; 
} 

문제는 XML 파일에 속성을 설정 OnClick = "clickRegister"및 단편으로 메서드 정의 실제로 MainActivity에서 정의하지 않아야 함 조각

그래서 두 번째 방법은 두 가지 방법을 MainActivity로 이동하는 것입니다. :

public void clickRegister(View view) 
{ 


    buttonClickListener.onRegisterClicked(); 
} 
public void clickNextTime(View view) 
{ 

buttonClickListener.onNextTimeclicked(); 
} 



} 
+0

사실 두 번째 방법은 문제를 해결하지만, 캡슐화의 객체 지향 특성을 – NoXSaeeD

+0

mm을 적용하지 않습니다 ...하지만 첫 번째 방법은 – NoXSaeeD

+0

더 내가 듣고 행복 해요 TNX – K1A

관련 문제