Toast对象崩溃的应用程序

时间:2014-04-03 20:27:10

标签: android

我有这个MainActivity会立即崩溃我的应用程序。为什么会这样?我尝试用类型为Context Context aContext = getApplicationContext();的对象替换参数的“MainActivity.this”部分,遵循Google的参考示例,结果完全相同。

我做错了什么?

非常感谢。

package com.nactus.questionme;

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

public class MainActivity extends Activity {

    private Button mMadridButton;
    private Button mWrongButton;
    private Toast aToast;

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

        // target the buttons
        mMadridButton = (Button) findViewById(R.string.button_madrid);
        mWrongButton = (Button) findViewById(R.string.button_wrong);

        // set event listeners
        mMadridButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                Context context = getApplicationContext();

                // my code goes here
                aToast = Toast.makeText(context, "test", Toast.LENGTH_SHORT);

                aToast.show();
            }
        });

        mWrongButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                Context context = getApplicationContext();

                // my code goes here
                aToast = Toast.makeText(context, "test", Toast.LENGTH_SHORT);

                aToast.show();
            }
        });
    }



}

更新代码以反映建议:同样崩溃

4 个答案:

答案 0 :(得分:1)

而不是

R.string.buttonWrong 

(findViewById的参数)应该是:

R.id.buttonWrong

因为它搜索R.java文件,其中存储了用XML文件编写的元素(按钮,开关,布局)的所有信息。

答案 1 :(得分:0)

您应该使用getApplicationContext()功能。

例如,

Context context = getApplicationContext();
aToast = Toast.makeText(context, R.string.incorrect_toast, Toast.LENGTH_SHORT);
aToast.show();

阅读this

答案 2 :(得分:0)

您可以从logcat提供错误日志。但我假设您的应用程序立即崩溃而不是按下按钮时崩溃。 如果是这种情况,则可能是由于错误的id被提供给findViewById方法而导致的NullPointerException。请检查提供的ID是否属于activity_main布局。 设置单击侦听器时,mMadridButton或mWrongButton都为null。因此它崩溃了。 Toast部分似乎没问题!

答案 3 :(得分:0)

请勿使用此代码

private Toast aToast;
aToast = Toast.makeText(context, "test", Toast.LENGTH_SHORT);
aToast.show();

而是使用此单行代码

Toast.makeText(getBaseContext(),"test",Toast.LENGTH_SHORT).show();