Почему мой метод onClick не вызывается из раздутого представления в моем пользовательском фрагменте? - PullRequest
2 голосов
/ 06 октября 2011

У меня есть пользовательский фрагмент, который раздувает его содержимое из test.xml

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.test, container, true);
    return v;
}

Внутри test.xml у меня есть кнопка переключения, определенная так:

<ToggleButton 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="update"
    />

КогдаЯ нажимаю на кнопку переключения и получаю следующую ошибку:

Could not find a method update(View) in the activity class 
android.view.ContextThemeWrapper for onClick handler on view class 
android.widget.ToggleButton

У меня есть следующий метод, определенный как в действии вызова, так и во фрагменте, но ни один из них не вызывается:

public void update(View view) {
    Log.d(LOG_TAG, "starting update!");
}

Я в замешательстве.

1 Ответ

5 голосов
/ 07 октября 2011

Когда вы создаете LayoutInflater, который вы создаете, возможно, с помощью ContextThemeWrapper, и для работы вам нужно создать с контекстом действия.

У меня была похожая проблема. Я создавал так:

(LayoutInflater) getApplicationContext (). GetSystemService (Context.LAYOUT_INFLATER_SERVICE);

тогда я сделал так:

(LayoutInflater) this.getSystemService (Context.LAYOUT_INFLATER_SERVICE);

и работал.

Надеюсь, я помог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...