onClick中的Toast消息显示为空白

时间:2014-05-04 10:31:24

标签: android android-toast

我有一个奇怪的问题,我正在努力。

这是非常基本的:点击Toast时尝试显示imageView消息, 代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_password);

    lock = (ImageView) findViewById(R.id.lock);
    lock.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            Toast.makeText(getBaseContext(), "clicked", Toast.LENGTH_SHORT).show();
        }
    });
}

但由于某种原因,吐司消息是空白的,就像我发送了一个""信息。 如果我将吐司线移动到" oncreate"它将显示为正常, 我不知道似乎是什么问题

3 个答案:

答案 0 :(得分:0)

替换行:

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

Toast.makeText(YourActivityClass.this, "clicked", Toast.LENGTH_SHORT).show();

正确获取上下文。

有关详细说明,请参阅Android: why must use getBaseContext() instead of this的已接受答案。

答案 1 :(得分:0)

在开头获取上下文并使用它来显示Toast:

private static Context mContext;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mContext = getApplicationContext();

    setContentView(R.layout.activity_password);

    lock = (ImageView) findViewById(R.id.lock);
    lock.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(mContext, "clicked", Toast.LENGTH_SHORT).show();
        }
    });
}

答案 2 :(得分:0)

使用此静态方法,您只需调用它,而不是每次都重新创建方法。所以在你的Class.java中创建它(例子)

public static void showToast(Context context, String text) {
    Toast.makeText(context, text, Toast.LENGTH_LONG).show();
}

然后使用

调用它
Class.showToast(getActivity().getApplicationContext(), "text");