2017-08-13 2 views
-2

この質問は何度も聞かれましたが、私に聞こえます。私はMainActivityを持っています。これはLoginActivity &です。FacebookのログインとAccountKitをFacebookから使用してログインし、ContactsActivityである次のアクティビティを開始します。私がContactsActivityにいて、戻るボタンを押すとMainActivityが表示されますが、ユーザーが正常にログインしたときにアプリケーションを終了します。ユーザーがアプリケーションを再び開くと、以前に正常にログインしたときにContactsActivityを直接開く必要があります。Backpreesingは以前の活動に私を連れて行きます

問題は私が連絡先アクティビティの[戻る]ボタンを押すとLoginActivityにかかります。私のアプリを閉じるstartActivity(インテント)の後に既にfinish()を試しています。成功したsignin.Ifを開いた後、ContactsActivityそれから私はContactsActivityに直接連れて行く。 私は仕上げを書きましたが、うまくいきませんでした。 Android Manifestでは、MainActivityタグでandroid:noHistory = "true"と書いてありますが、動作しません。 あなたが近いアプリいけない、通常の方法で

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context="pritish.sawant.com.simplychat.MainActivity"> 

    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/loginwithphonenumber" 
     android:text="@string/loginwithphoneno" 
     style="@style/Base.Widget.AppCompat.Button.Borderless" 
     android:textColor="@android:color/white" 
     android:background="@drawable/login_button_selector" 
     android:textSize="16sp" 
     android:layout_centerInParent="true" 
     android:textAlignment="center" 
     android:layout_marginLeft="16dp" 
     android:layout_marginRight="16dp" 
     android:layout_marginBottom="8dp" 
     /> 

    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/email_login_button" 
     android:text="@string/loginwithemail" 
     android:layout_below="@+id/loginwithphonenumber" 
     style="@style/Base.Widget.AppCompat.Button.Borderless" 
     android:textColor="@android:color/white" 
     android:background="@drawable/login_button_selector" 
     android:textSize="16sp" 
     android:textAlignment="center" 
     android:layout_marginLeft="16dp" 
     android:layout_marginRight="16dp" 
     android:layout_marginBottom="8dp" 

     /> 

    <com.facebook.login.widget.LoginButton 
     android:id="@+id/facebook_login_button" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/email_login_button" 
     android:textSize="16sp" 
     android:textAllCaps="true" 
     android:layout_marginLeft="16dp" 
     android:layout_marginRight="16dp" 
     android:layout_marginBottom="16dp" 
     android:paddingTop="14dp" 
     android:paddingBottom="14dp" 
     android:paddingLeft="16dp" 
     android:paddingRight="16dp" 

     /> 





</RelativeLayout> 

MainActivity

public class MainActivity extends AppCompatActivity { 

    public static int APP_REQUEST_CODE=1; 
    private LoginButton facebookloginButton; 
    private Button emailloginbutton,phonenologinbutton; 
    private CallbackManager callbackManager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     facebookloginButton=(LoginButton)findViewById(R.id.facebook_login_button); 
     emailloginbutton=(Button)findViewById(R.id.email_login_button); 
     phonenologinbutton=(Button)findViewById(R.id.loginwithphonenumber); 

     callbackManager=CallbackManager.Factory.create(); 
     facebookloginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 
       launchContactsActivity(); 

      } 

      @Override 
      public void onCancel() { 

      } 

      @Override 
      public void onError(FacebookException error) { 
       Toast.makeText(getApplicationContext(), R.string.loginfailed,Toast.LENGTH_LONG).show(); 
      } 
     }); 


     AccessToken accessToken= AccountKit.getCurrentAccessToken(); 
     com.facebook.AccessToken loginToken= com.facebook.AccessToken.getCurrentAccessToken(); 
     if(accessToken!=null || loginToken!=null){ 
      launchContactsActivity(); 
     } 


     emailloginbutton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       onLogin(LoginType.EMAIL); 

      } 
     }); 

     phonenologinbutton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       onLogin(LoginType.PHONE); 

      } 
     }); 

    } 

    private void launchContactsActivity(){ 
     Intent intent=new Intent(getApplicationContext(),ContactsActivity.class); 
     startActivity(intent); 
     finish(); 
    } 


    private void onLogin(final LoginType loginType) { 
     // create intent for the Account Kit activity 
     final Intent intent = new Intent(this, AccountKitActivity.class); 

     // configure login type and response type 
     AccountKitConfiguration.AccountKitConfigurationBuilder configurationBuilder = 
       new AccountKitConfiguration.AccountKitConfigurationBuilder(
         loginType, 
         AccountKitActivity.ResponseType.TOKEN 
       ); 
     final AccountKitConfiguration configuration = configurationBuilder.build(); 

     // launch the Account Kit activity 
     intent.putExtra(AccountKitActivity.ACCOUNT_KIT_ACTIVITY_CONFIGURATION, configuration); 
     startActivityForResult(intent, APP_REQUEST_CODE); 
     finish(); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     callbackManager.onActivityResult(requestCode,resultCode,data); 
     if(requestCode==APP_REQUEST_CODE){ 
      AccountKitLoginResult accountKitLoginResult=data.getParcelableExtra(AccountKitLoginResult.RESULT_KEY); 
      if(accountKitLoginResult.getError()!=null){ 
       String toastMessage = accountKitLoginResult.getError().getErrorType().getMessage(); 
       Toast.makeText(this, toastMessage, Toast.LENGTH_LONG).show(); 
      } else if (accountKitLoginResult.getAccessToken() != null) { 
       launchContactsActivity(); 
      } 
     } 
    } 


} 
+0

これまでに試したコードを追加してください。 –

+0

見てください、私はコードを追加しました – Cycle

答えて

0

activity_main

を助けてください - ユーザーが自宅を押すか、背中を押して、あなたの活動を閉じてバックアップすることを移動します。

しかし、あなたは、このヒントを使用することができます:オーバーライドはonBackPressedとアプリが

を閉じます

startActivity(newActivityIntent); 
finish(); 

:彼らが戻ってスタックに必要とされない場合は、新しいものを開始した後

1)閉じる古い活動を

2)必要に応じてタスクを(閉じずに)戻すことができますhttp://developer.android.com/reference/android/app/Activity.html#moveTaskToBack(boolean)

+0

LoginActivity.super.onBackPressed();でエラーを取得しています。 – Cycle

+0

@Cycle私は、連絡先に行くのではなく、finish()を使用すると答えを –

+0

に編集し、私のアプリケーションを閉じます – Cycle

関連する問題