2017-11-16 8 views
-1

私のアプリケーションにはログインプロセスの進捗状況ダイアログがあり、ダイアログボックスが開いている間に向きが変更されると、アプリケーションがクラッシュします。ダイアログが表示されます。この時点で、アプリはクラッシュします。私は最後の3泊からこの問題を考え出していますが、それを手に入れることはできません。助けてください。 マイフラグメント:進行状況ダイアログが開いているとユーザーが向きを変えたときにアプリケーションがクラッシュする

public class Example extends Fragment { 

private static final String TAG = "LoginActivity"; 
private static final int REQUEST_SIGNUP = 0; 


Unbinder unbinder; 

@BindView(R.id.input_email) EditText _emailText; 
@BindView(R.id.input_password) EditText _passwordText; 
@BindView(R.id.btn_login) Button _loginButton; 
@BindView(R.id.link_signup) TextView _signupLink; 

@Override 
public void onDestroyView() { 
    super.onDestroyView(); 

    // unbind the view to free some memory 
    unbinder.unbind(); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.Example, container, false); 

    unbinder=ButterKnife.bind(this,rootView); 



    _loginButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      login(); 
     } 
    }); 


    _signupLink.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View view) 
     { 
      Intent create= new Intent(getActivity(),NewAccount.class); 
      startActivity(create); 
     } 

    }); 
    return rootView; 
} 

public void login() { 
    Log.d(TAG, "Login"); 

    if (!validate()) { 
     onLoginFailed(); 
     return; 
    } 

    _loginButton.setEnabled(false); 

    final ProgressDialog progressDialog = new ProgressDialog(getActivity(), 
      R.style.AppTheme_Dark_Dialog); 
    progressDialog.setIndeterminate(true); 
    progressDialog.setMessage("Authenticating..."); 
    progressDialog.show(); 
    //new YourAsynTask(getActivity()).execute(); 

    String email = _emailText.getText().toString(); 
    String password = _passwordText.getText().toString(); 

    // TODO: Implement your own authentication logic here. 

    new android.os.Handler().postDelayed(
      new Runnable() { 
       public void run() { 
        // On complete call either onLoginSuccess or onLoginFailed 
        onLoginSuccess(); 

        // onLoginFailed(); 
        progressDialog.dismiss(); 

       } 
      }, 3000); 
} 

@Override 
public void onPause() { 
    Log.e("DEBUG", "OnPause of loginFragment1"); 
    super.onPause(); 
} 

public void onLoginSuccess() { 
    _loginButton.setEnabled(true); 
    Intent i=new Intent(getActivity(),SuccessLogin.class); 
    startActivity(i); 
} 

public void onLoginFailed() { 
    Toast.makeText(getActivity(), "Login failed", Toast.LENGTH_LONG).show(); 

    _loginButton.setEnabled(true); 
} 

public boolean validate() { 
    boolean valid = true; 

    String email = _emailText.getText().toString(); 
    String password = _passwordText.getText().toString(); 

    if (email.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) { 
     _emailText.setError("enter a valid email address"); 
     valid = false; 
    } else { 
     _emailText.setError(null); 
    } 

    if (password.isEmpty() || password.length() < 4 || password.length() > 10) { 
     _passwordText.setError("between 4 and 10 alphanumeric characters"); 
     valid = false; 
    } else { 
     _passwordText.setError(null); 
    } 

    return valid; 
} 

Logcat出力:

11-16 19:20:10.955 4022-4022/com.example.a1332931.login_application E/WindowManager: android.view.WindowLeaked: Activity com.example.a1332931.login_application.TabActivity has leaked window com.android.internal.policy.PhoneWindow$DecorView{42b6135 V.E...... R......D 0,0-683,232} that was originally added here 
                        at android.view.ViewRootImpl.<init>(ViewRootImpl.java:375) 
                        at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:299) 
                        at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85) 
                        at android.app.Dialog.show(Dialog.java:319) 
                        at com.example.a1332931.login_application.Example.login(Example.java:156) 
                        at com.example.a1332931.login_application.Example$1.onClick(Example.java:67) 
                        at android.view.View.performClick(View.java:5201) 
                        at android.view.View$PerformClick.run(View.java:21163) 
                        at android.os.Handler.handleCallback(Handler.java:746) 
                        at android.os.Handler.dispatchMessage(Handler.java:95) 
                        at android.os.Looper.loop(Looper.java:148) 
                        at android.app.ActivityThread.main(ActivityThread.java:5443) 
                        at java.lang.reflect.Method.invoke(Native Method) 
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
11-16 19:20:10.957 4022-4095/com.example.a1332931.login_application E/Surface: getSlotFromBufferLocked: unknown buffer: 0xb8aa6c60 

11-16 19:20:12.512 4022-4022/com.example.a1332931.login_application E/AndroidRuntime: FATAL EXCEPTION: main 
                        Process: com.example.a1332931.login_application, PID: 4022 
                        java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setEnabled(boolean)' on a null object reference 
                         at com.example.a1332931.login_application.Example.onLoginSuccess(Example.java:200) 
                         at com.example.a1332931.login_application.Example$3.run(Example.java:168) 
                         at android.os.Handler.handleCallback(Handler.java:746) 
                         at android.os.Handler.dispatchMessage(Handler.java:95) 
                         at android.os.Looper.loop(Looper.java:148) 
                         at android.app.ActivityThread.main(ActivityThread.java:5443) 
                         at java.lang.reflect.Method.invoke(Native Method) 
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
+0

'_loginButton.setEnabled(偽);'と 'javaの。 lang.NullPointerException:ヌルオブジェクト参照で仮想メソッド 'void android.widget.Button.setEnabled(boolean)'を呼び出そうとしました。 – greenapps

答えて

0

は、Androidマニフェストの活動で、この構成の変更を追加します。

<activity 
      android:name="YourActivity" 
      android:configChanges="orientation|keyboardHidden|screenSize"/> 
+0

私はすでに自分のフラグメントを含むアクティビティにそれを追加しました。 –

+0

あなたのマニフェストを入れてください – diegoveloper

+0

android:configChanges = "screenSize"仕事をしました。たくさんありがとうございます。 –

関連する問題