Настройка кнопок для Android - PullRequest
       7

Настройка кнопок для Android

1 голос
/ 01 августа 2011

Вот моя проблема.Я настраиваю кнопки точно так же, как они настроены в документации Android, но я получаю предупреждение, и кнопка ничего не сделает.

Вот мой код Java:

package com.variDice;

import android.app.Activity;
import android.os.Bundle;
import android.widget.*;

public class VariDiceActivity extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        //die1Clicked();
    }

    private void die1Clicked() {
        ImageButton die1button = (ImageButton)findViewById(R.id.die1button);
        die1button.setImageResource(R.drawable.icon);
    }
}

... и XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:weightSum="1" android:layout_gravity="center_horizontal">

    <ImageView 
        android:id="@+id/varidice_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:src="@drawable/icon"></ImageView>
    <ImageButton
        android:id="@+id/die1button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:background="@null"></ImageButton>

</LinearLayout>

... и предупреждение:

The method die1Clicked from the type VariDiceActivity is never used locally.

Я должен сказать, что я совершенно новичок в разработке Android,Я сделал свое приложение для iPhone, и сейчас я пытаюсь сделать версию для Android.Версия для iPhone была намного проще из-за лучшего построителя интерфейса (так что я могу просто выполнить действие и подключить его к кнопке таким образом), так что это почти невозможно для меня понять.Другими словами, я не понимаю, как вы подключаете действие к кнопке.Может кто-нибудь сказать мне, что я делаю не так?

Ответы [ 4 ]

4 голосов
/ 01 августа 2011

Чтобы привязать некоторое поведение к кнопке пользовательского интерфейса, вам необходимо зарегистрировать прослушиватель, который получает уведомления о событиях определенного типа.В вашем случае вы регистрируете OnClickListener (для события click);как в следующем фрагменте:

// create the implementation of OnClickListener
private OnClickListener mDie1Listener = new OnClickListener() {
    public void onClick(View v) {
      // do something when the button is clicked
    }
};

protected void onCreate(Bundle savedValues) {
    ...
    // get the button from layout
    Button button = (Button)findViewById(R.id.die1button);
    // register the onClick listener with the implementation above
    button.setOnClickListener(mDie1Listener);
    ...
}
4 голосов
/ 01 августа 2011

Попробуйте это в своем xml:

<ImageButton
    android:id="@+id/die1button"
    android:onClick="die1Clicked"
    ...></ImageButton>

И в своем коде измените сигнатуру метода на:

public void die1Clicked(android.view.View v) {
    ImageButton die1button = (ImageButton)findViewById(R.id.die1button);
    die1button.setImageResource(R.drawable.icon);
}

Вот учебник по кнопкам Android .

3 голосов
/ 01 августа 2011

Вам необходимо добавить прослушиватель кликов для вашей кнопки.Поместите это в ваш onCreate():

ImageButton die1button = (ImageButton)findViewById(R.id.die1button);
die1button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
    // What to do when the button is clicked    
});
0 голосов
/ 09 января 2014

Большинство ответов на SO имеют тенденцию использовать 'setOnClickListener' вместо использования свойств xml.Лично я предпочитаю использовать xml для создания элементов, реагирующих на клики в Android.

Ошибка, которую вы допустили, - установить вашу функцию как приватную.Функция, которая вызывается после щелчка по элементу, должна быть общедоступной.

Необходимо помнить 3 вещи:

  1. Определить 2 свойства в xml.

    android: clickable = "true" android: onClick = "functionName"

  2. Определите эту функцию в файле Activity.Убедитесь, что функция общедоступна.

    public void functionName (View v) {// TODO Сгенерированный автоматически метод заглушки
    }

  3. Обязательно передайте«Просмотр v» в качестве аргумента для этой функции.

...