我有一个奇怪的问题,我正在努力。
这是非常基本的:点击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"它将显示为正常, 我不知道似乎是什么问题
答案 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");