Android: проблема Noob с кнопкой - PullRequest
1 голос
/ 08 января 2011
package com.parseador.prueba;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

public class main extends Activity {
    /** Called when the activity is first created. */
    //private Button botonParsear;
    private EditText link;
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //Button botonParsear = (Button) findViewById(R.id.BotonParsear); 
        //EditText link = (EditText) findViewById(R.id.Link);
    }

    public void onParsearClick(View botonParsear) {
     link.setText("Siii");
    }
}

Hello.

У меня проблема, когда я запускаю этот код. Это продолжает играть. Попробовал изменить что в комментариях, но нет способа заставить кнопку работать.

Буду признателен, если вы скажете мне, что я делаю не так.

Заранее спасибо.

Ps: у файла xml есть метод на кнопке. Это ее код (на сильный звонок):

android:layout_height="wrap_content" 
android:text="@string/parse" 
android:textSize="20sp" 
android:layout_width="wrap_content" 
android:layout_gravity="center" 
<strong>android:onClick="onParsearClick"</strong> 
android:id="@+id/BotonParsear"

Ответы [ 2 ]

1 голос
/ 09 января 2011

Линия

EditText link = (EditText) findViewById(R.id.Link);

почти там.Вы объявляете новую локальную переменную link, которая затеняет переменную экземпляра link в вашем классе main.Таким образом, хотя вы присваиваете локальную переменную экземпляру View, расположенному findViewById, он выходит за пределы области действия и перестает существовать после возврата onCreate.Переменная link, считываемая onParsearClick, по-прежнему null и не может быть разыменована.Поэтому вызов link.setText завершается неудачей.

Измените строку так, чтобы она была простым оператором присваивания, а не объявлением переменной:

link = (EditText) findViewById(R.id.Link);

Возможно, вы захотите прочитать об объеме видимости Javaправила на будущее.

0 голосов
/ 08 января 2011

Ваш пример (измененный) работает для меня ...

public void onParsearClick(View botonParsear) {
     Toast.makeText(this, "it is working", Toast.LENGTH_LONG).show();
    }

Посмотрите, относится ли к вам какой-либо из этих потоков - onClick не будет срабатывать при ImageView

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