片段中的Toast(运行代码时没有语法但没有显示)

时间:2015-07-31 13:55:04

标签: android toast

我是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(); 

    }


}

3 个答案:

答案 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)

你能在下面试试吗?实际上我在1个月前遇到过同样的问题,我已经通过以下代码解决了这个问题:

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