当用户单击活动的FRAGMENT中的按钮时,我希望有一个弹出式上下文帮助。我已尝试使用Toast
执行此操作,但徒劳无功。弹出对话框未显示(请注意Use Toast inside Fragment中的建议没有帮助。)
片段类中的代码如下所示:
final Button help = (Button) view.findViewById(R.id.help_button);
del.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
Context context = (TabsActivity) getActivity().getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(view.getContext(), text, duration);
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.show();
}
});
我尝试了CONTEXT
的几种变体,其中两种变体显示在代码中。
我也尝试了getActivity()
,getView().getContext()
,getContext()
所有这些都是徒劳的。你能帮助理解如何在片段中设置CONTEXT吗?
答案 0 :(得分:5)
使用您的应用程序上下文,而不是从视图中再次获取它。
Context context = getActivity().getApplicationContext();
Toast.makeText(context, "Hello toast!", Toast.LENGTH_LONG).show();
保持简单并从那里开始工作,这样你就可以确定我们确实导致了你的错误。
将记录放入您的代码中,然后您可以确定何时实际使用onClick侦听器而不是依赖Toast
setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Log.d("MyTag", "Button 1 was pressed");
}
}
答案 1 :(得分:4)
简单地使用getActivity()没有其他东西。不需要Casting或者也不需要获取应用程序上下文。
我使用Toast.makeText(getActivity(), "Simple Toast",1000).show();
它适用于我。
答案 2 :(得分:1)
:
final Button help = (Button) view.findViewById(R.id.help_button);
del.setOnClickListener(new View.OnClickListener(){
不应该阅读(注意帮助现在得到这个onclick监听器):
final Button help = (Button) view.findViewById(R.id.help_button);
help.setOnClickListener(new View.OnClickListener(){
答案 3 :(得分:1)
试试这个,
Toast toast = Toast.makeText(getActivity().getApplicationContext(), "text", 100);
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.show();