Java 未使用共享首选项保存会话

Java 未使用共享首选项保存会话,java,android,sharedpreferences,Java,Android,Sharedpreferences,我有两项活动。在第一个活动中,我有一个登录选项,在第二个活动中,我有两个按钮,即注销和关闭。 我的问题是,当用户登录并进入第二个活动时,当用户关闭未注销的应用程序并再次重新打开应用程序时,需要显示第二个活动 这是我的密码: MainActivity.java package com.example.user.store_session; import android.content.Context; import android.content.Intent; import android.c

我有两项活动。在第一个活动中,我有一个登录选项,在第二个活动中,我有两个按钮,即注销和关闭。 我的问题是,当用户登录并进入第二个活动时,当用户关闭未注销的应用程序并再次重新打开应用程序时,需要显示第二个活动

这是我的密码:

MainActivity.java

package com.example.user.store_session;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.session.MediaSessionManager;
import android.os.UserManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {
    EditText name,password;
    Button login;
       public static final String ARB="ARBAZ";
       public static final String NAME="USERNAME";
    public static final String PASSWORD="PASSWORD";
       SharedPreferences sharedPreferences;


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

        name=(EditText)findViewById(R.id.Edit_text_name);
        password=(EditText)findViewById(R.id.edit_text_password);
        login=(Button)findViewById(R.id.button_login);
        sharedPreferences=getSharedPreferences(ARB, Context
                .MODE_PRIVATE);
        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String name_=name.getText().toString();
                String pass=password.getText().toString();

                SharedPreferences.Editor editor=sharedPreferences.edit();
                editor.putString(NAME,name_); //NAME IS THE KEY VALUE
                editor.putString(PASSWORD,pass);
                editor.commit();

                Intent intent=new Intent(MainActivity.this,Main2Activity.class);
                startActivity(intent);
            }
        });
    }
}
package com.example.user.store_session;

import android.content.Context;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class Main2Activity extends AppCompatActivity {
    Button logout,close;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        logout=(Button)findViewById(R.id.logout_button);
        close=(Button)findViewById(R.id.close_button);

        close.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
        logout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SharedPreferences sharedpreferences = getSharedPreferences(MainActivity.ARB, Context
                        .MODE_PRIVATE);
                SharedPreferences.Editor editor = sharedpreferences.edit();
                editor.clear();
                editor.commit();

            }
        });
    }

}
Main2Activity.java

package com.example.user.store_session;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.session.MediaSessionManager;
import android.os.UserManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {
    EditText name,password;
    Button login;
       public static final String ARB="ARBAZ";
       public static final String NAME="USERNAME";
    public static final String PASSWORD="PASSWORD";
       SharedPreferences sharedPreferences;


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

        name=(EditText)findViewById(R.id.Edit_text_name);
        password=(EditText)findViewById(R.id.edit_text_password);
        login=(Button)findViewById(R.id.button_login);
        sharedPreferences=getSharedPreferences(ARB, Context
                .MODE_PRIVATE);
        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String name_=name.getText().toString();
                String pass=password.getText().toString();

                SharedPreferences.Editor editor=sharedPreferences.edit();
                editor.putString(NAME,name_); //NAME IS THE KEY VALUE
                editor.putString(PASSWORD,pass);
                editor.commit();

                Intent intent=new Intent(MainActivity.this,Main2Activity.class);
                startActivity(intent);
            }
        });
    }
}
package com.example.user.store_session;

import android.content.Context;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class Main2Activity extends AppCompatActivity {
    Button logout,close;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        logout=(Button)findViewById(R.id.logout_button);
        close=(Button)findViewById(R.id.close_button);

        close.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
        logout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SharedPreferences sharedpreferences = getSharedPreferences(MainActivity.ARB, Context
                        .MODE_PRIVATE);
                SharedPreferences.Editor editor = sharedpreferences.edit();
                editor.clear();
                editor.commit();

            }
        });
    }

}

在应用程序关闭并重新打开后,我不会返回第二个活动。

在MainActivity.java中,只需检查值名称或密码是否存在

MainActivity.java

package com.example.user.store_session;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.session.MediaSessionManager;
import android.os.UserManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {
    EditText name,password;
    Button login;
       public static final String ARB="ARBAZ";
       public static final String NAME="USERNAME";
    public static final String PASSWORD="PASSWORD";
       SharedPreferences sharedPreferences;


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

        name=(EditText)findViewById(R.id.Edit_text_name);
        password=(EditText)findViewById(R.id.edit_text_password);
        login=(Button)findViewById(R.id.button_login);
        sharedPreferences=getSharedPreferences(ARB, Context
                .MODE_PRIVATE);
        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String name_=name.getText().toString();
                String pass=password.getText().toString();

                SharedPreferences.Editor editor=sharedPreferences.edit();
                editor.putString(NAME,name_); //NAME IS THE KEY VALUE
                editor.putString(PASSWORD,pass);
                editor.commit();

                Intent intent=new Intent(MainActivity.this,Main2Activity.class);
                startActivity(intent);
            }
        });

           // check if NAME have a value. If have value, user has been logged, so go to the second activity.
          if ( !sharedPreferences.getString("NAME","").equals("") || !sharedPreferences.getString("PASSWORD","").equals("") ){
                Intent intent=new Intent(MainActivity.this,Main2Activity.class);
                startActivity(intent);
           }

    }
}

我说的对吗?若用户已登录,那个么当用户打开你们的应用程序时,你们想打开Main2活动吗?因为你们并没有为此编写任何代码。只需在创建第一个活动时验证名称和密码是否存在。如果存在,完成它并启动第二个活动。当用户登录时,保存一个用户已登录的布尔值,并在主活动的第一个上进行此检查,如果此布尔值存在或为真,则打开第二个活动如果调用
SharedReferences.Editor.clean()
则无需检查密码,所有字段都将被清除,所以只要检查一个就足够了。但是,我编辑的问题main2activity.java是正确的…需要进行更正。不,如果您只是检查用户是否已登录,则只有更改MainActivity.java有效。Main2Activity.java无需更改。让我知道是否有效。在if条件下,您要检查名称字段或密码是否为null。我的问题是,如果其中任何一个为null,为什么要触发第二个活动。好的,当您清理SharedReference字段时,所有数据都会被清理。因此,密码和名称字段已被清除,因此,如果您知道用户已注销,则只需一个字段即可证明数据已被删除。