Android:保持与复选框的连接
我想在登录阶段添加一个复选框,当点击应用程序时,记住用户在未注销的情况下退出, 但是,如果未单击此复选框,则用户可以访问多个活动,但如果用户退出而未注销,则仍然会注销。 这是我的代码:Android:保持与复选框的连接,android,login,logout,android-checkbox,Android,Login,Logout,Android Checkbox,我想在登录阶段添加一个复选框,当点击应用程序时,记住用户在未注销的情况下退出, 但是,如果未单击此复选框,则用户可以访问多个活动,但如果用户退出而未注销,则仍然会注销。 这是我的代码: public class MainActivity extends Activity implements OnClickListener{ private EditText username=null; private EditText password=null; privat
public class MainActivity extends Activity implements OnClickListener{
private EditText username=null;
private EditText password=null;
private Button login, registration;
public static final String MyPREFERENCES = "MyPrefs" ;
public static final String user = "nameKey";
public static final String pass = "passwordKey";
SharedPreferences sharedpreferences;
public boolean isChecked = false;
public boolean isunChecked = true;
private CheckBox check;
String a,b, result,z, clic;
Class<?> activityClass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_main);
username = (EditText)findViewById(R.id.editText1);
password = (EditText)findViewById(R.id.editText2);
registration = (Button)findViewById(R.id.button2);
login = (Button)findViewById(R.id.button1);
TextView text2 = (TextView) findViewById(R.id.tv);
login.setOnClickListener(this);
registration.setOnClickListener(this);
check = (CheckBox) findViewById(R.id.checkBox);
check.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1 : {
login.setEnabled(false);
registra.setEnabled(true);
registra.setClickable(false);
username.setFocusable(false);
password.setFocusable(false);
if (check.isChecked()) {
clic = "Checked";
System.out.println("CheckBox is checked");
}
else{
clic = "no_Checked";
System.out.println("CheckBox is unchecked");
}
LoginTask task = new LoginTask(username,password);
task.execute(null,null,null);
break;
}
case R.id.button2: {
registration.setEnabled(false);
login.setEnabled(true);
login.setClickable(false);
registration(v);
break;
}
}
}
public class LoginTask extends AsyncTask<Void, Void, String> {
public LoginTask(EditText username2, EditText password2) {
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if(result.equals("ok")){
Toast.makeText(MainActivity.this, "ok", Toast.LENGTH_SHORT).show();
}
else {
login.setEnabled(true);
login.setClickable(true);
registration.setEnabled(true);
registration.setClickable(true);
username.setFocusableInTouchMode(true);
password.setFocusableInTouchMode(true);
}
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected String doInBackground(Void... params) {
String result = null;
Editor editor = sharedpreferences.edit();
try {
[....]
String u = username.getText().toString();
String p = password.getText().toString();
editor.putString(user, u);
editor.putString(pass, p);
if(clic.equals("checked
editor.putBoolean("isChecked", isChecked);
System.out.println("clic");
}else{
editor.putBoolean("isChecked", isunChecked);
System.out.println("no_clic");
}
editor.commit();
Intent intent = new Intent(getApplicationContext(), HomeActivity.class);
startActivity(intent);
}
catch (Exception e) {
System.err.println(e.getMessage());
e.printStackTrace();
return result=e.getMessage();
}
return result="ok";
}
}
@Override
protected void onResume() {
sharedpreferences=getSharedPreferences(MyPREFERENCES,
Context.MODE_PRIVATE);
if(isChecked = sharedpreferences.getBoolean("isChecked", true)){
Toast.makeText(MainActivity.this, "login", Toast.LENGTH_SHORT).show();
if (sharedpreferences.contains(user))
{
if(sharedpreferences.contains(pass)){
Toast.makeText(MainActivity.this, "login", Toast.LENGTH_SHORT).show();
System.out.println(" CheckBox is checked");
try {
SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
activityClass = Class.forName(prefs.getString("activity1", FirstActivity.class.getName()));
prefs.getString("activity2", SecondActivity.class.getName());
} catch(ClassNotFoundException ex) {
}
Intent i = new Intent(this, activityClass);
startActivity(i);
}
}
}else{
Toast.makeText(MainActivity.this, "logout", Toast.LENGTH_SHORT).show();
System.out.println("logout");
//logout();
}
super.onResume();
}
public void registration (View view){
Intent intent1;
intent1 = new Intent (this, Registration.class);
startActivity(intent1);
}
public void onPause() {
super.onPause();
this.finish();
}
public void closing() {
finish();
}
public类MainActivity扩展活动实现OnClickListener{
私有EditText用户名=null;
私有EditText密码=null;
私人按钮登录、注册;
公共静态最终字符串MyPREFERENCES=“MyPrefs”;
公共静态最终字符串user=“nameKey”;
公共静态最终字符串pass=“passwordKey”;
SharedReferences SharedReferences;
公共布尔值isChecked=false;
公共布尔值isunChecked=true;
私人复选框检查;
字符串a,b,result,z,clic;
类活动类;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_main);
用户名=(EditText)findViewById(R.id.editText1);
密码=(EditText)findViewById(R.id.editText2);
注册=(按钮)findViewById(R.id.button2);
登录=(按钮)findViewById(R.id.button1);
TextView text2=(TextView)findViewById(R.id.tv);
login.setOnClickListener(this);
registration.setOnClickListener(此);
check=(复选框)findViewById(R.id.CheckBox);
check.setOnClickListener(这个);
}
@凌驾
公共void onClick(视图v){
开关(v.getId()){
案例R.id.button1:{
login.setEnabled(false);
注册。设置启用(真);
注册。可点击设置(错误);
username.setFocusable(false);
password.setFocusable(false);
如果(检查.isChecked()){
clic=“已检查”;
System.out.println(“选中复选框”);
}
否则{
clic=“未选中”;
System.out.println(“复选框未选中”);
}
登录任务=新登录任务(用户名、密码);
task.execute(null,null,null);
打破
}
案例R.id.按钮2:{
registration.setEnabled(false);
login.setEnabled(true);
login.setClickable(false);
注册(五);
打破
}
}
}
公共类LoginTask扩展异步任务{
公共登录任务(EditText用户名2、EditText密码2){
}
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
如果(结果等于(“确定”)){
Toast.makeText(MainActivity.this,“ok”,Toast.LENGTH_SHORT.show();
}
否则{
login.setEnabled(true);
login.setClickable(true);
registration.setEnabled(true);
注册。可点击设置(真);
username.setFocusableInTouchMode(true);
password.setFocusableInTouchMode(true);
}
}
@凌驾
受保护的void onProgressUpdate(void…值){
super.onProgressUpdate(值);
}
@凌驾
受保护字符串doInBackground(无效…参数){
字符串结果=null;
Editor=SharedReferences.edit();
试一试{
[....]
字符串u=username.getText().toString();
字符串p=password.getText().toString();
编辑器.putString(用户,u);
编辑器.putString(pass,p);
如果(clic.equals)(“选中
编辑:putBoolean(“isChecked”,isChecked);
系统输出打印项次(“clic”);
}否则{
编辑器.putBoolean(“isChecked”,isunChecked);
System.out.println(“no_clic”);
}
commit();
Intent Intent=新的Intent(getApplicationContext(),HomeActivity.class);
星触觉(意向);
}
捕获(例外e){
System.err.println(e.getMessage());
e、 printStackTrace();
返回结果=e.getMessage();
}
返回结果=“确定”;
}
}
@凌驾
受保护的void onResume(){
SharedReferences=GetSharedReferences(MyPREFERENCES,
上下文。模式(私人);
if(isChecked=SharedReferences.getBoolean(“isChecked”,true)){
Toast.makeText(MainActivity.this,“login”,Toast.LENGTH_SHORT.show();
if(SharedReferences.contains(用户))
{
if(sharedReferences.contains(pass)){
Toast.makeText(MainActivity.this,“login”,Toast.LENGTH_SHORT.show();
System.out.println(“选中复选框”);
试一试{
SharedReferences prefs=GetSharedReferences(“X”,模式\私有);
activityClass=Class.forName(prefs.getString(“activity1”,FirstActivity.Class.getName());
prefs.getString(“activity2”,SecondActivity.class.getName());
}捕获(ClassNotFoundException ex){
}
意向i=新意向(此为activityClass);
星触觉(i);
}
}
}否则{
Toast.makeText(MainActivity.this,“logout”,Toast.LENGTH_SHORT.show();
System.out.println(“注销”);
//注销();
}
super.onResume();
}
公共作废登记(查看){
意图1;
intent1=新的意图(这个,Registration.class);
星触觉(意图)