我是Android开发的新手。最近,当我想使用吐司和警报对话框时,我遇到了一个问题。
Toast.makeText(getActivity(), " error", Toast.LENGTH_LONG).show();
我尝试了getActivity().getApplicationContext()
而不是getActivity
两个代码都没有语法错误,但在运行
时没有显示任何内容更多代码:
public class RegisterFragment extends Fragment {
...
.... onCreate...
.... GetData();...
..
在GetData()
中inputStream = response.getEntity().getContent();
String error = convertInputStreamToString(inputStream);
JSONObject data = new JSONObject(error);
String test123 = data.getJSONObject("error").getString("code");
RegisterFragment register = new RegisterFragment();
register.makeToast(test123);
...
..
}
在makeToast函数中:
public void makeToast(String error){
Log.v("error",error);
Toast.makeText(getActivity(), "missing input",Toast.LENGTH_LONG).show();
}
}
答案 0 :(得分:0)
toast只能在UI线程上显示。由于您正在进行网络调用,因此响应必须在后台线程上运行。将您的方法更改为
public void makeToast(String error) {
Log.v("error", error);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getActivity(), "missing input", Toast.LENGTH_LONG).show();
}
});
}
答案 1 :(得分:0)
new CountDownTimer(2000,2000) {
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
makeToast("Your Error Message");
}
}.start();
希望它会对你有所帮助。
答案 2 :(得分:0)
RegisterFragment register = new RegisterFragment();
register.makeToast(test123);
这是你的问题。您刚刚创建了RegisterFragment
的实例,但此时它未附加到Activity
。因此,getActivity()
内的makeToast()
电话会返回null
。