无法从登录激活进入主要活动(具有后台任务)

时间:2016-03-28 18:12:48

标签: android android-intent android-activity

我正在创建一个具有登录功能的应用,但我遇到了一个问题,即当我输入正确的帐户信息时,我无法进入主要活动,登录活动似乎重新启动:

我的loginTask来自登录活动:

  @Override
protected void onPostExecute(String json) {
try {
    progressDialog.dismiss();
    JSONObject jsonObject = new JSONObject(json);
    JSONArray jsonArray =  jsonObject.getJSONArray("server_response");
    JSONObject jo = jsonArray.getJSONObject(0);
    String code = jo.getString("code");
    String message = jo.getString("message");
    if (code.equals("reg_true")){
        showDialog("Register succes", message, code);
    }
    else if (code.equals("reg_false")){
        showDialog("Register fail", message, code);
    }
    else if (code.equals("login_true")){
        Intent intent = new Intent(activity, MainActivity.class);
        intent.putExtra("message", message);
        activity.startActivity(intent);

        //activity.finish(); // i tried with finish but i loose the itent extra i need for sharedpreference
    }

登录课程:

public class LoginActivity extends AppCompatActivity {
EditText Mail,Password;
Button Login;
TextView toRegister;
AlertDialog.Builder builder;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    Mail = (EditText) findViewById(R.id.lMail);
    Password = (EditText) findViewById(R.id.lPassword);
    Login = (Button) findViewById(R.id.bLogin);
    toRegister = (TextView)findViewById(R.id.toRegister);

    toRegister.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(LoginActivity.this, RegisterActivity.class));
        }
    });

    Login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if ( Mail.getText().toString().equals("") || Password.getText().toString().equals("") ){
                builder = new AlertDialog.Builder(LoginActivity.this);
                builder.setTitle("Attention");
                builder.setMessage("Rempliser tout les champs");
                builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();

                    }
                });
                AlertDialog alertDialog = builder.create();
                alertDialog.show();
            }
            else{
                BackgroundTask bt = new BackgroundTask(LoginActivity.this);
                bt.execute("login" ,Mail.getText().toString(), Password.getText().toString() );
            }
        }
    });
}

@Override
public void onBackPressed() {
    // Disable going back to the MainActivity
    moveTaskToBack(true);
}

}

如果遗漏了任何内容,您可以在gist上找到我的mainactivty并显示: https://gist.github.com/anonymous/efc3400df01a0b972a71

编辑:登录:

03-28 20:40:01.539 954-4500/? I/ActivityManager: START u0 {cmp=com.serk.comparateurL3F1/.MainActivity (has extras)} from uid 10169 on display 0
03-28 20:40:01.550 954-4500/? D/ActivityManager: finishRunningVoiceLocked()  >>>>
03-28 20:40:01.562 954-4007/? W/InputMethodManagerService: Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@b2323bc attribute=null, token = android.os.BinderProxy@2dc1afc
03-28 20:40:01.600 24100-24100/? I/AppCompatViewInflater: app:theme is now deprecated. Please move to using android:theme instead.
03-28 20:40:01.659 954-4500/? I/ActivityManager: START u0 {cmp=com.serk.comparateurL3F1/.LoginActivity} from uid 10169 on display 0
03-28 20:40:01.665 954-4500/? D/ActivityManager: finishRunningVoiceLocked()  >>>>
03-28 20:40:01.704 954-3708/? D/WindowManager: relayoutVisibleWindow: Window{452fac1 u0 com.serk.comparateurL3F1/com.serk.comparateurL3F1.MainActivity EXITING} mAnimatingExit=true, mRemoveOnExit=false, mDestroying=false
03-28 20:40:01.716 954-972/? I/WindowManager: Destroying surface Surface(name=Wait...) called by com.android.server.wm.WindowStateAnimator.destroySurface:1738 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:816 com.android.server.wm.WindowState.destroyOrSaveSurface:1906 com.android.server.wm.AppWindowToken.destroySurfaces:357 
03-28 20:40:01.742 24100-24100/? W/OpenGLRenderer: Points are too far apart 4.000001
03-28 20:40:01.882 24100-24100/? I/TextInputLayout: EditText added is not a TextInputEditText. Please switch to using that class instead.
03-28 20:40:01.884 24100-24100/? I/TextInputLayout: EditText added is not a TextInputEditText. Please switch to using that class instead.
03-28 20:40:02.065 954-972/? I/ActivityManager: Displayed com.serk.comparateurL3F1/.LoginActivity: +379ms (total +499ms)
03-28 20:40:02.097 3156-3156/? I/Keyboard.Facilitator: onFinishInput()
03-28 20:40:02.098 3156-3156/? I/Keyboard.Facilitator: onStartInput()
03-28 20:40:02.109 3156-3156/? I/LatinIME: Starting input. Cursor position = 0,0
03-28 20:40:02.114 954-4003/? I/WindowManager: Destroying surface Surface(name=com.serk.comparateurL3F1/com.serk.comparateurL3F1.MainActivity) called by com.android.server.wm.WindowStateAnimator.destroySurface:1738 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:816 com.android.server.wm.WindowState.destroyOrSaveSurface:1906 com.android.server.wm.WindowManagerService.tryStartExitingAnimation:2830 
03-28 20:40:02.152 3918-13832/? D/PhoneInterfaceManager: [PhoneIntfMgr] getDataEnabled: subId=1 phoneId=0
03-28 20:40:02.153 3918-13832/? D/PhoneInterfaceManager: [PhoneIntfMgr] getDataEnabled: subId=1 retVal=true
03-28 20:40:02.153 3218-3617/? D/TelephonyManager: getDataEnabled: retVal=true
03-28 20:40:02.167 3156-3156/? I/Keyboard.Facilitator: resetDictionaries() : no-op
03-28 20:40:02.168 3156-3156/? I/StatsUtilsManager: onLoadSettings()
03-28 20:40:02.436 954-4005/? I/WindowManager: Destroying surface Surface(name=com.serk.comparateurL3F1/com.serk.comparateurL3F1.LoginActivity) called by com.android.server.wm.WindowStateAnimator.destroySurface:1738 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:816 com.android.server.wm.WindowState.destroyOrSaveSurface:1906 com.android.server.wm.WindowManagerService.tryStartExitingAnimation:2830 

2 个答案:

答案 0 :(得分:3)

MainActivity.onCreate(...)上查看你最后在做什么。

Intent intent = new Intent(this, LoginActivity.class);
startActivity(intent);

您正在重新启动LoginActivity。如果您不想这样做,请删除上面的行,以便MainActvivity继续正确加载。

答案 1 :(得分:2)

我不确定我是否有理由,但你可以检查一下你是否需要这个... 在主要活动的第82和83行。

Intent intent = new Intent(this, LoginActivity.class);        
startActivity(intent);