当用户点击片段内的按钮时,我正在尝试显示Toast消息。问题是我无法访问活动以显示Toast。
以下是Fragment
的来源:
public class FrgTimes extends Fragment
{
ScrollView sv;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
if (container == null) { return null; }
sv = (ScrollView)inflater.inflate(R.layout.frg_times, container, false);
btnTime1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//****** HERE's the PROBLEM ********
Toast.makeText(<The Activity>, "Please long press the key", Toast.LENGTH_LONG );
}});
return sv;
}
以下是我的尝试。
Toast.makeText( getActivity() , ...
Toast.makeText( getView().getContext() , ...
Toast.makeText( getActivity().getApplicationContext() , ...
Toast.makeText( sv.getContext() , ...
Toast.makeText( sv.getRootView().getContext() , ...
在Debug中,我可以看到所有这些代码都没有任何异常,但没有显示TOAST
。
答案 0 :(得分:103)
您没有使用show()
在Toast
上致电makeText()
。
答案 1 :(得分:48)
如alfo888_ibg所述:
@Override
public void onClick(View arg0) {
Toast.makeText(activity,"Text!",Toast.LENGTH_SHORT).show();
}
只是做:
Toast.makeText(getActivity(),"Text!",Toast.LENGTH_SHORT).show();
这对我有用。
答案 2 :(得分:20)
为了帮助另一个遇到同样问题的人, 在Fragment中使用Toast的完整答案是:
Activity activity = getActivity();
@Override
public void onClick(View arg0) {
Toast.makeText(activity,"Text!",Toast.LENGTH_SHORT).show();
}
答案 3 :(得分:12)
在片段中敬酒时,请执行以下操作:
Toast.makeText(getActivity(),"Message", Toast.LENGTH_SHORT).show();
当类扩展片段时,必须使用 getActivity(),因为片段是活动的子类。
Cheerse
答案 4 :(得分:7)
您可以使用getActivity()
获取当前活动Toast.makeText(getActivity(),"Toast your message" ,Toast.LENGTH_SHORT).show();
答案 5 :(得分:6)
在片段中制作祝酒词
Toast.makeText(getActivity(), "Your Text Here!", Toast.LENGTH_SHORT).show();
OR
Activity activityObj = this.getActivity();
Toast.makeText(activityObj, "Your Text Here!", Toast.LENGTH_SHORT).show();
OR
Toast.makeText(this, "Your Text Here!", Toast.LENGTH_SHORT).show();
答案 6 :(得分:1)
user2564789说得对了
但您也可以在this
的位置使用getActivity()
这将使你的吐司看起来像这样
Toast.makeText(this,"Message",Toast.LENGTH_SHORT).show();
答案 7 :(得分:1)
在android片段中调用Toast时:
1. Activity mActivity=this.getActivity();
2. Toast.makeText(mActivity,"Text you want to display",Toast.LENGTH_SHORT).show();
这适合我。
答案 8 :(得分:0)
(适用于Dialog,Fragment,Even Util等等......)
ApplicationContext.getInstance().toast("I am toast");
相应地在Application类中添加以下代码。
public class ApplicationContext extends Application {
private static ApplicationContext instance;
@Override
public void onCreate() {
super.onCreate();
instance = this;
}
public static void toast(String message) {
Toast.makeText(getContext(), message, Toast.LENGTH_SHORT).show();
}
}
答案 9 :(得分:0)
一个简单的[Fragment]子类。
科特林!
contextA-是父(主)活动。在创建对象上进行设置。
class Start(contextA: Context) : Fragment() {
var contextB: Context = contextA;
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
val fl = inflater.inflate(R.layout.fragment_start, container, false)
// only thet variant is worked on me
fl.button.setOnClickListener { view -> openPogodaUrl(view) }
return fl;
}
fun openPogodaUrl(view: View) {
try {
pogoda.webViewClient = object : WebViewClient() { // pogoda - is a WebView
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
view?.loadUrl(url)
return true
}
}
pogoda.loadUrl("http://exemple.com/app_vidgets/pogoda.html");
}
catch (e: Exception)
{
Toast.makeText(contextB, e.toString(), Toast.LENGTH_LONG).show();
}
}
}
答案 10 :(得分:0)
使用Kotlin
Toast.makeText(view!!.context , "your_text", Toast.LENGTH_SHORT).show()
答案 11 :(得分:0)
如果您正在使用kotlin,则上下文将在片段中已定义。因此,只需使用该上下文即可。尝试使用以下代码显示敬酒消息。
Toast.makeText(context , "your_text", Toast.LENGTH_SHORT).show()
答案 12 :(得分:0)
在 Kotlin 中 Toast.makeText(activity!!, "Your Text Here!", Toast.LENGTH_SHORT).show()
答案 13 :(得分:-1)
public void onClick(View v) {
Context context = v.getContext();
CharSequence text = "Message";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}