我有两个按钮的活动。这两个按钮都会带您进入下一个活动,同时为共享偏好提供一个值。我想在最后一次活动中访问此值。
这是两个按钮所在的第一个活动:
public void imagebutton (){
ImageButton btn = (ImageButton) findViewById(R.id.imageButton3);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(Akt1.this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("name2", "Geschlecht");
editor.clear();
editor.apply();
startActivity(new Intent(Akt1.this, Akt2.class));
}
});
}
//buttonclick mit datapass gemixt
private void imagebutton1 () {
ImageButton btn = (ImageButton) findViewById(R.id.imageButton4);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences preferences = getSharedPreferences("myprefs", MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("name","Geschlecht");
editor.commit();
Intent intent = new Intent (Akt1.this,Akt2.class);
startActivity(intent);

这里是我想要访问从buttonclick传递给sharedpreferences的值的最后一个活动的代码:
public class Akt6 extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Hiermit Layout mit Activity verbinden
setContentView(R.layout.activity_akt6);
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String name = preferences.getString("Name",null);
name ="Männlich";
SharedPreferences preferences2 = PreferenceManager.getDefaultSharedPreferences(this);
String name2 = preferences.getString("Name", "default");
name2 ="Weiblich";
//zeige Wert on screen
TextView textView19 = (TextView) findViewById(R.id.textView19);
textView19.setText(name);

答案 0 :(得分:0)
因为这个原因,你得到了相同的价值:
String name = preferences.getString("Name", null);
...
String name2 = preferences.getString("Name", "default");
您使用相同的密钥“名称”。您使用“name”和“name2”键存储了值。 因此,如果你想获得这些值,你需要写这样的东西:
String name = preferences.getString("name", null);
...
String name2 = preferences.getString("name2", "default");
此外,您总是存储相同的值“Geschlecht”:
editor.putString("name2", "Geschlecht");
editor.putString("name","Geschlecht");
答案 1 :(得分:0)
我不确定你在活动中做了什么,但是如果你需要知道按下了按钮,你可以按照以下步骤操作:
给你的按钮听众添加:
public void imagebutton (){
...
editor.putString("name2", "Geschlecht");
editor.putString("ButtonPressed","Button1"); // This is the new line
...
}
...
public void imagebutton1 (){
...
editor.putString("name2", "Geschlecht");
editor.putString("ButtonPressed","Button2"); // This is the new line
...
}
然后,要获取活动中按下的按钮的值,请执行以下操作:
...
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String button = preferences.getString("ButtonPressed","");
if(!button.isEmpty()){
switch(button){
case "Button":
//You have pressed the first button
break;
case "Button2":
//You have pressed the second button
break;
}
}
您应该为每个传递为sharedpref名称和值的String使用常量,以避免代码中的人为错误。 祝你好运!
答案 2 :(得分:0)
我的代码有什么问题?我总是得到相同的价值 结束。所以看起来我总是按下相同的按钮,我不会这样做。
1。在方法imagebutton1()
中,您将name
的值存储到不同的sharedPreferences(myprefs
)中:
// Akt1
SharedPreferences preferences = getSharedPreferences("myprefs", MODE_PRIVATE);
并尝试从name
sharedPreferences:
default
的值
// Akt6
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
2. 您已使用KEY name
存储值:
// Akt1
editor.putString("name","Geschlecht");
通过使用完全错误的不同KEY Name
来获取价值。
// Akt6
String name = preferences.getString("Name", null);
如何查看按下了哪两个按钮?
<强> SOLUTION:强>
SharedPreferences
来存储和检索值。"name"
来存储和检索来自name
SharedPreferences
的值
醇>
更新您的代码,如下所示:
<强> Akt1.java
强>
public void imageButton (){
ImageButton btn = (ImageButton) findViewById(R.id.imageButton3);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(Akt1.this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("name", "Male");
editor.commit();
startActivity(new Intent(Akt1.this, Akt2.class));
}
});
}
private void imageButton1 () {
ImageButton btn = (ImageButton) findViewById(R.id.imageButton4);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(Akt1.this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("name", "Female");
editor.commit();
startActivity(new Intent(Akt1.this, Akt2.class));
}
});
}
<强> Akt6.java
强>
public class Akt6 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_akt6);
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String name = preferences.getString("name", "default");
TextView textView19 = (TextView) findViewById(R.id.textView19);
textView19.setText(name);
}
}
希望这会有所帮助〜