sea*_*ean 1 java eclipse android sharedpreferences
我正在创建一个应用程序,询问用户第一次输入密码.但是,无论何时按下"提交"按钮,应用程序都会停止,我认为这是因为我为SharedPreferences制作的课程.我不知道在课堂上放什么.需要一些帮助.谢谢
package com.android.steg;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class Password extends Activity implements OnClickListener
{
Button submitButton;
EditText passwordEditText;
private SharedPreferences SharedPreference;
public static final String PREFS_PRIVATE = "PREFS_PRIVATE";
public static final String KEY_PRIVATE = "KEY_PRIVATE";
public static final String PREFS_READ = "PREFS_READ";
public static final String KEY_READ = "KEY_READ";
public static final String PREFS_WRITE = "PREFS_WRITE";
public static final String KEY_WRITE = "KEY_WRITE";
public static final String PREFS_READ_WRITE = "PREFS_READ_WRITE";
public static final String KEY_READ_WRITE = "KEY_READ_WRITE";
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.pass);
Button submitButton = (Button) findViewById(R.id.submitButton);
submitButton.setOnClickListener(this);
}
public void onClick(View v)
{
EditText passwordEditText = (EditText) findViewById(R.id.passwordEditText);
SharedPreferences prefs = this.getApplicationContext().getSharedPreferences("prefs_file",MODE_PRIVATE);
String password = prefs.getString("password","");
if(password=="")
{
Editor edit = prefs.edit();
edit.putString("password",passwordEditText.getText().toString());
edit.commit();
StartMain();
}
else
{
if(passwordEditText.getText().toString()== password)
{
StartMain();
}
}
}
public void StartMain()
{
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
}
}
Run Code Online (Sandbox Code Playgroud)
每当我按下提交按钮时,它都不会将我发送到MainActivity类的启动.
你没有Strings正确比较.更换
if(password=="")
Run Code Online (Sandbox Code Playgroud)
同
if("".equals(password))
Run Code Online (Sandbox Code Playgroud)
和
if(passwordEditText.getText().toString()== password)
Run Code Online (Sandbox Code Playgroud)
同
if(passwordEditText.getText().toString().equals(password))
Run Code Online (Sandbox Code Playgroud)
编辑
您需要进行这些更改的原因(password=="")始终是false,因此else块将始终执行.在else块内,唯一的测试是(passwordEditText.getText().toString()== password),这也将永远false.因此,两次调用StartMain()都在无法访问的代码块内,并且永远不会执行.您可以通过Log.d("MY_TAG","message goes here");在各种块if和else块中放置一堆行来轻松演示这一点.
编辑2
啊.Woops.由于String比较问题的显而易见性,我对代码还有一个额外的问题.您混淆了按钮声明的范围.您首先为该类定义它:
Button submitButton;
Run Code Online (Sandbox Code Playgroud)
你重新定义它onCreate():
Button submitButton = (Button) findViewById(R.id.submitButton);
Run Code Online (Sandbox Code Playgroud)
将最后一行更改为:
submitButton = (Button) findViewById(R.id.submitButton);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
764 次 |
| 最近记录: |