Java 未使用共享首选项保存会话
我有两项活动。在第一个活动中,我有一个登录选项,在第二个活动中,我有两个按钮,即注销和关闭。 我的问题是,当用户登录并进入第二个活动时,当用户关闭未注销的应用程序并再次重新打开应用程序时,需要显示第二个活动 这是我的密码: MainActivity.javaJava 未使用共享首选项保存会话,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
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字段时,所有数据都会被清理。因此,密码和名称字段已被清除,因此,如果您知道用户已注销,则只需一个字段即可证明数据已被删除。