2016-12-11 80 views
1

我正在使用片段,我想註冊一個按鈕單擊,但當我嘗試使用android:onClick時出現此錯誤。片段中的按鈕點擊

java.lang.IllegalStateException: Could not find method preferenceChange(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'btnSave' 

我試着尋找不同的解決方案,但沒有任何工作。我沒有運行Lolipop。

+0

你在哪裏做btnSave功能? – yanivtwin

+0

在名爲PreferencesView.java的片段中 – Coder

+0

您可以發佈完整的片段和活動代碼嗎? –

回答

1

,如果你使用的

android:onClick 

需要調用該方法在活動不是片段,如果你想在點擊做一個片段,你可以隨時使用這個例子

final Button button = (Button) view.findViewById(R.id.button_id); 
button.setOnClickListener(new View.OnClickListener() { 
public void onClick(View v) { 
    // Perform action on click 
}}); 
+0

我使用的標籤和我的MainActivity不創建片段,但另一個Java類,但它不是一個活動。我應該把它放在哪裏? – Coder

+0

在一個setonclicklistener我會說 – yanivtwin

1

我做了什麼來解決這個問題是使活動實施View.onClick監聽器:

implements View.OnClickListener 

然後在創建方法的活動設置的onClick監聽器:

@Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     btnSave = (Button) getActivity().findViewById(R.id.btnSave); 
     btnSave.setOnClickListener(this); 
    } 

然後實現我需要實現的方法:

@Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
      case R.id.btnSave: 
       preferenceChange(); 
       break; 
      default: 
       break; 
     } 

    }