簡體   English   中英

顯示吐司上的 java.lang.NullPointerException

[英]java.lang.NullPointerException on show toast

我正在使用OkHttp庫來訪問url ,並且我想在返回給定消息時顯示Toast 問題是當我嘗試查看toast 時,顯示java.lang.NullPointerException錯誤。 你能幫助我嗎?

對不起,我的英語不好。

public void sendtows(String usr_e, String usr_p) throws Exception{
    String stResponse;

    Request request = new Request.Builder()
            .url("http://127.0.0.1/l.php?useremail=" + usr_e + "&userpassword=" + usr_p)
            .build();
    Response response = client.newCall(request).execute();

    stResponse = response.body().string();

    if(response.isSuccessful()){
        if(stResponse.contains("OK")){
            Log.d("Login", "Ok");
        } else {
            Toast toastErr = Toast.makeText(getApplicationContext(), "error", Toast.LENGTH_SHORT);
            toastErr.show();
        }
    } else {
        Log.d("ERRO", "erro");
    }
 }

不要工作! 日志:

09-14 16:47:49.802 4342-4374/com.android.vending D/Finsky: [222] AppStatesReplicator.handleContentSyncResponse:完成 0 個帳戶內容同步,0 個成功。 09-14 16:47:49.802
4342-4342/com.android.vending D/Finsky:[1] 5.onFinished:安裝狀態復制成功。 09-14 16:48:08.112
2487-2532/system_process E/InputDispatcher:運動事件有無效的指針計數0; 值必須在 1 到 16 之間。09-14 16:48:08.182
2487-2532/system_process E/InputDispatcher:運動事件有無效的指針計數0; 值必須在 1 到 16 之間。09-14 16:48:08.182
1289-1323/? D/audio_hw_primary﹕發現 /dev/snd/pcmC0D0p 09-14 16:48:08.242 1289-1323/? W/audio_hw_primary: out_write() 限制睡眠時間 112539 到 46439 09-14 16:48:08.312 1289-1323/? W/audio_hw_primary:out_write() 限制睡眠時間 65759 到 46439 09-14 16:48:09.652 4227-4227/com.lavie.conflife D/Errorx:java.lang.NullPointerException 09-14 16:452:1
2657-3291/com.bluestacks.bstfolder D/dalvikvm:GC_FOR_ALLOC 釋放 740K,29% 釋放 2774K/3868K,暫停 0 毫秒,總共 0 毫秒

onClick 調用 sendtows

public void sendData(View view){ //btLogin click
    Context context = getApplicationContext();
    int duration = Toast.LENGTH_SHORT;

    if(checkInternetConnection()){
        try{
            usr_email = (EditText)findViewById(R.id.etEmail);
            usr_password = (EditText)findViewById(R.id.etPassword);

            final String email = usr_email.getText().toString();
            final String pass = usr_password.getText().toString();

            if (!isValidEmail(email)) {
                usr_email.setError(getString(R.string.invalid_email));
            } else if (!isValidPassword(pass)) {
                usr_password.setError(getString(R.string.invalid_password));
            } else {
                new LoginActivity().sendtows(usr_email.getText().toString(), usr_password.getText().toString());
            }
        } catch (Exception e){
            Log.d("Errorx", e.toString());
        }
    } else {
        CharSequence text = "Offline";
        Toast toast = Toast.makeText(context, text, duration);
        toast.show();
    }
}

您在Toast中使用getApplicationContext() ,這可能會給您NullPointerException 所以,

如果您使用的是Fragment,請使用:

Toast toastErr = Toast.makeText(getActivity(), "error", Toast.LENGTH_SHORT);
 toastErr.show();

如果您使用的是Class,則創建一個可以傳遞Context並在Toast 中使用該Context的構造函數,如下所示:

//Constructor to pass context
 public Your_ClassName(Context context){
      this.context = context;
    }

 Toast toastErr = Toast.makeText(context, "error", Toast.LENGTH_SHORT);
 toastErr.show();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM