1

Web サイトにユーザーを登録するために使用する Android アプリがあります。私の最初のタスクは、共有設定ファイルに登録済みのユーザー情報がないことが示されている場合に、ユーザーを登録することです。

私のアプリに登録ユーザーがいる場合、次のコードを提供して、「ホームページ」アクティビティに簡単かつ自動的に切り替えます。

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.signin);

        if( USERPREFERENCES.getString(USERPREFERENCES_USERMAIL, "")  == null && USERPREFERENCES.getString(USERPREFERENCES_USERID, "") == null && USERPREFERENCES.getString(USERPREFERENCES_USERNAME, "") == null){
            //setContentView(R.layout.signin);
            Toast.makeText(SignIn.this, "testing...", Toast.LENGTH_LONG).show();
        }else{
            Intent intent   =   new Intent(SignIn.this, Confirmed.class);
            startActivity(intent);
        }
... other code

したがって、デフォルトのアクティビティである signin.java から、アプリは Confirmed アクティビティに切り替えるか、そのままにしてサインイン アクティビティを表示します。

私の問題は、システムが機能し、確認済みアクティビティに切り替えられたときに、以下のログアウト onclick リスナーを提供することです。

 signout.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //USERPREFERENCES.cl
                Toast.makeText(Confirmed.this, "signout responding!", Toast.LENGTH_LONG).show();
                USERPREFERENCES.edit().clear().commit();
            }
        });

すべての共有設定変数に応答してクリアします。しかし、メニューを使用して手動でサインイン アクティビティに切り替えると、確認済みアクティビティに戻ります。

これは、変数が空であることを確認できても発生します。

これが、私に助けを提供できる人に役立つことを願っています。ありがとう。

4

3 に答える 3

2

これが真になることはめったにありません。

USERPREFERENCES.getString(USERPREFERENCES_USERMAIL, "")  == null

代わりにこれを使用するとどうなりますか?

if( USERPREFERENCES.getString(USERPREFERENCES_USERMAIL, null)  == null && USERPREFERENCES.getString(USERPREFERENCES_USERID, null) == null && USERPREFERENCES.getString(USERPREFERENCES_USERNAME, null) == null){
    //setContentView(R.layout.signin); TRY TO AVOID DOING THIS THING!!!!!
    Toast.makeText(SignIn.this, "testing...", Toast.LENGTH_LONG).show();
}else...

また、推奨事項として... アクティビティを切り替える代わりに... Signing.java アクティビティだけを作成しViewFlipper、そのレイアウトに を配置するとどうなりますか。そうすれば、アプリが高速になるだけでなく、保守も容易になります。

于 2011-05-30T14:58:50.333 に答える
2

これは、LoginActivity に戻ると、作成される代わりに再開されるためです。これは、onCreate で記述したログイン コードが呼び出されないことを意味します。

したがって、このコードを onResume で再度記述するか、2 番目の activity に移動する前に finish() を呼び出して、次回は onCreate() を呼び出すようにします。

于 2011-05-30T15:09:50.843 に答える
1

最初のアクティビティに戻った場合、onCreateが再度呼び出されることはありません (リソース不足のためにアクティビティが破棄された場合を除く)。認証コードを に移動しonResumeます。

于 2011-05-30T14:58:58.680 に答える