0

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

这是非常基本的:尝试Toast在单击 a 时显示一条消息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”,它将显示为正常,我不知道似乎是什么问题

4

3 回答 3

0

换行:

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

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

正确获取上下文。

请参阅 Android 的公认答案:为什么必须使用 getBaseContext() 而不是这个以获得更多解释。

于 2014-05-04T10:38:19.410 回答
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();
        }
    });
}
于 2014-05-04T10:40:17.957 回答
0

使用此静态方法,您可以简单地调用它,而不是每次都重新创建该方法。因此,将其创建到您的 Class.java 中(示例)

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

然后通过使用调用它

Class.showToast(getActivity().getApplicationContext(), "text");
于 2014-05-04T10:41:15.980 回答