【发布时间】:2017-10-01 23:13:13
【问题描述】:
我是 Android 开发的初学者,但在某些 TextView 中显示一些文本时,我遇到了保存更改的问题。但一个对我来说更难。 为了解释简单,我有 2 个活动,Activity1 是主要的,Activity2 是用户信息。 在 Activity1(主)中,用户单击按钮(“登录”)然后他继续 Activity2 在这里用户可以输入他的个人信息,然后他点击一个按钮(“保存数据”)然后我将他的数据添加到数据库(SQLite) ,然后当用户单击另一个按钮(“开始”)时,他返回 Activity1 我使用意图以在 Activity1 中的 TextView 上显示他的昵称,并带有“欢迎”+昵称。 但是当用户退出应用程序时,没有保存,更改并没有用昵称保存,但昵称始终在我的数据库中。
我会给你看一些代码: 活动2:
public class ProfilActivity extends Activity {
EditText editNickname; // We just work on the nickname so I just keep it
MyDatabase myDb;
Button bAddData, go;
public SharedPreferences prefs;
private String nicktobesaved;
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_profil);
myDb = new MyDatabase(this);
prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE);
editNickname = (EditText) findViewById(R.id.pseudo2);
bAddData = (Button) findViewById(R.id.ajouter);
nicktobesaved = prefs.getString("nickname", "");
bAddData.setEnabled(prefs.getBoolean("isEnabled", true) ? true : false);
AddData();
} // End onCreate()
public void changeNickname(View v) {
// I delete this method who passed an intent
}
public void AddData() { // When user click on bAddData button
bAddData.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
nicktobesaved = prefs.getString("nickname", "");
nicktobesaved = editPseudo.getText().toString();
// The following code is just for save data on my database SQLite
boolean isInserted = myDb.insertData(editNickname.getText().toString());
if (isInserted == true) {
Toast.makeText(ProfilActivity.this, "Data saved", Toast.LENGTH_LONG).show();
prefs.edit().putBoolean("isEnabled", false).apply();
bAddData.setEnabled(false);
} else {
Toast.makeText(ProfilActivity.this, "Data not saved", Toast.LENGTH_LONG).show();
}
}
}
);
}
}
Activity1(主要活动):
public class MainActivity extends Activity {
TextView tv;
Button login;
public SharedPreferences prefs;
private String nickname;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE);
nickname = prefs.getString("nickname", "");
login = (Button) findViewById(R.id.connexion);
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intentLogin = new Intent(MainActivity.this, ProfilActivity.class);
startActivity(intentLogin);
}
});
tv = (TextView)findViewById(R.id.pseudo);
if(nickname.equals("")) {
tv.setText("Welcome");
} else {
tv.setText("Welcome " + nickname);
}
}
}
Pseudo = 法语昵称, Bienvenue = 法语欢迎, 谢谢大家的帮助,我希望你们能理解我的问题。 皮克罗
【问题讨论】:
标签: sqlite android-edittext textview save sharedpreferences