2016-12-11 2 views
1

Я использую фрагменты, и я хочу зарегистрировать кнопку, но я получаю эту ошибку, когда я пытаюсь использовать android: onClick.Button Clicks in Fragments

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; 
     } 

    }