2013-12-05 5 views
0

Я новичок в разработке Android. Я пытаюсь сделать свое первое приложение с помощью кнопок и тостов.Android-приложение остановлено неэффективно при нажатии кнопки

Я создал кнопку и функцию для сообщения тоста. Когда я нажал кнопку, он сказал: «Приложение неожиданно остановилось. Повторите попытку». Я понятия не имею, что я могу сделать. Какие-либо предложения? Благодарю.

< -------------------------- My Activity_main.xml --------------- ------->

<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" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".MainActivity" > 

<Button 
    android:id="@+id/button1" 
    style="?android:attr/buttonStyleSmall" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:text="@string/start_game" 
    android:onClick="startGame" /> 

< ------------------ Мой MainActivity.java -------- ------------>

public class MainActivity extends Activity { 

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

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

public void startGame(){ 
    Toast.makeText(getApplicationContext(), "Button Clicked!", Toast.LENGTH_LONG).show(); 
} 
+0

сообщения вашего LogCat. – nhgrif

ответ

1

Изменить метод StartGame() к этому:

public void startGame(View v){ 
    Toast.makeText(getApplicationContext(), "Button Clicked!", Toast.LENGTH_LONG).show(); 
} 

Всякий раз, когда вы используете атрибут onClick, соответствующий метод должен быть определен с View параметром

1

Если вы используете onClick атрибут представления в XML, то соответствующая функция ява должна быть в виде: public void (View target). Он должен иметь параметр View.

0

Чтобы ответить на ваш вопрос о том, что вы можете сделать - когда приложение останавливается, обычно появляется больше информации о том, что вызвало его в трассировке стека. Это говорит о том, где именно программа имела проблему, с точки зрения номера строки в вашем коде. Трассировка стека показана в представлении Logcat вашей среды IDE (я полагаю, вы используете ADT).

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

0

Было бы полезно, если бы вы могли опубликовать трассировку стека (я не на компьютере с Android в настоящее время). Но, скорее всего, это из-за вашей сигнатуры метода onClick. По-видимому, он нужен параметр зрения типа

public void startGame(View v)

исх: How exactly does the android:onClick XML attribute differ from setOnClickListener?

Если это не так, то я подозреваю, что контекст не доступны. Вы можете попробовать использовать контекст деятельности, как ниже

Toast.makeText(this, "Button Clicked!", Toast.LENGTH_LONG).show();

Смежные вопросы