Android应用程序崩溃

时间:2013-12-15 08:36:25

标签: android toast

我是android开发的新手。我正在尝试编写一个简单的Android应用程序,它有一个按钮并显示一个吐司。 我可以在虚拟设备中看到该图标,但是当我点击它时应用程序崩溃了。 以下是我到目前为止所写的内容:

MainActivity.java:

package com.example.stringopsapp;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.widget.Button;
import android.view.View;
//import android.view.View.OnClickListener;
import android.widget.Toast;

public class MainActivity extends Activity {

Button button;
private Context context;

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

    final Button button = (Button) findViewById(R.id.action_settings);
    button.setOnClickListener(new View.OnClickListener() {


    @Override
    public void onClick(View v) {
    Toast toast = Toast.makeText(context, "reach Me @ Winscosin", Toast.LENGTH_SHORT);
    toast.show();
    }
    });
}


@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;
}

}

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:background="#000001"
    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" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#000000"
    android:text="@string/MyString"
    android:textColor="#bbcc00"
    android:textSize="25sp" />

<Button
    style="@style/AppTheme"
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="35dp"
    android:onClick="selfDestruct"
    android:background="#ffffff"
    android:textColor="#000000"
    android:text="@string/self_destruct" />

控制台显示以下内容:

[2013-12-15 14:09:10 - StringOpsApp] ------------------------------
[2013-12-15 14:09:10 - StringOpsApp] Android Launch!
[2013-12-15 14:09:10 - StringOpsApp] adb is running normally.
[2013-12-15 14:09:10 - StringOpsApp] Performing com.example.stringopsapp.MainActivity activity launch
[2013-12-15 14:09:10 - StringOpsApp] Automatic Target Mode: Preferred AVD 'MyDevice' is available on emulator 'emulator-5554'
[2013-12-15 14:09:10 - StringOpsApp] Uploading StringOpsApp.apk onto device 'emulator-5554'
[2013-12-15 14:09:14 - StringOpsApp] Installing StringOpsApp.apk...
[2013-12-15 14:09:22 - StringOpsApp] Success!
[2013-12-15 14:09:22 - StringOpsApp] Starting activity com.example.stringopsapp.MainActivity on device emulator-5554
[2013-12-15 14:09:25 - StringOpsApp] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.stringopsapp/.MainActivity 

3 个答案:

答案 0 :(得分:1)

您从未初始化成员变量context,因此null。由于您正在参与某项活动,因此您可以使用MainActivity.this代替上下文。

此外,您的主要布局似乎没有ID为action_settings的视图。如果这是您的实际代码,则在启动应用程序时会出现崩溃,而不是在单击按钮时出现。

N.B。在Android中发布有关崩溃的问题时,请始终在问题中包含来自logcat的异常堆栈跟踪。

答案 1 :(得分:0)

您忘记将id添加到xml文件中。你按钮xml还有一行:

android:id="@+id/action_settings"

答案 2 :(得分:0)

laalto先前的回答是正确的。

上下文为空。它没有初始化。 另一种方法是在Toast.makeText函数中使用getApplicationContext()

Toast.makeText(getApplicationContext(), "reach Me @ Winscosin", Toast.LENGTH_SHORT).show();