2013-12-12 6 views
2

Здравствуйте, я это очень простой код, который я пытаюсь запустить через Android StudiosetOnClickListener вызывает крах в APP

public class MainActivity extends ActionBarActivity { 
Button random; 
TextView display; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    random = (Button) findViewById(R.id.button); 
    display = (TextView) findViewById(R.id.TextView); 

    random.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      display.setText("I have changed"); 
     } 
    }); 

Я действительно не добавил очень много, но всякий раз, когда я использовать setOnClickListener независимо от того, то, что внутри него, приводит к сбою приложения. Я не мог найти решение для этого.

спасибо.

// edit: извините. Я добавил неверный код, random это кнопка

+0

Вы можете разместить LogCat ? – allemattio

+0

У меня такая же проблема, вы поняли это? –

ответ

0

Вы устанавливаете setOnClickListener метод на random объекта, который с помощью кода в настоящее время Null.

Итак, вы получаете NullPointerException.

Я думаю, вы намеревались это быть button.

+0

Извините, я добавил неверный код. Это уже «кнопка», но все еще не работает. – SaKer

+0

ОК, поэтому следующая проблема, которую я вижу, - это идентификатор вашего отображаемого объекта: R.id.TextView. вы уверены, что это идентификатор, который вы дали ему в xml-файле activity_main? попробуйте переключить его на дисплей. –

+0

Да, это ID текстового поля. Я изменил его на «ТВ», поэтому он немного запутан, но это, похоже, не помогает. – SaKer

0

Что такое «случайный»? Я думаю, что правильно будет:

button.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     display.setText("I have changed"); 
    } 
}); 
+0

Разве это не тот самый ответ, который я дал? –

0
In your code you are setting click listener on a button. Please make sure you get right id and right object to set listener. The button you want to set clcik listener on should have same id to the id you defined in you activity 

In Activity 
Button button =(Button)findViewById(R.id.button1); 

In XML 
<Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Button" /> 
+0

Если вы по-прежнему получаете сообщение об ошибке Пожалуйста, сообщите об ошибке logcat, чтобы мы могли помочь вам с правильным решением –

0

Во-первых, проверьте LogCat по уровню ошибок Во-вторых, случайное не инициализируется !!

Вам нужно

кнопку 1.Create в activity_main.xml

For example, 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 
<Button 
    android:id="@+id/myCoolButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Button" /> 
</RelativeLayout> 

2.Init, что кнопка в коде

Кнопка myCoolButton = (Button) findViewById (R. id.myCoolButton);

3.Attach слушателю кнопку

myCoolButton.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View view) { 
    display.setText("I have changed"); 
}}); 

И это работает! Надеюсь, что поможет вам

0

Это не кажется, что ваше дело, но у меня была та же проблема, и она была вызвана тем, что эти строки

mButton = findViewById(R.id.button); 
mButton.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
    // ... 
} 
}); 

перед тем

setContentView(R.layout.activity_main); 
Смежные вопросы