Android 未反映存储在共享首选项中的值
当我单击按钮时,textview的值必须更改为“这些是新值”,但这不会发生。有人能帮我找到我的错误吗?在您更改文本之前,Android 未反映存储在共享首选项中的值,android,sharedpreferences,Android,Sharedpreferences,当我单击按钮时,textview的值必须更改为“这些是新值”,但这不会发生。有人能帮我找到我的错误吗?在您更改文本之前,文本视图正在设置文本。因此它不会反映在文本视图中。更改字符串的值后,将此行添加到onclick方法的最后一行 package com.example.shared; import android.app.Activity; import android.content.SharedPreferences; import android.content.SharedPrefer
文本视图正在设置文本。因此它不会反映在文本视图中。更改字符串的值后,将此行添加到onclick
方法的最后一行
package com.example.shared;
import android.app.Activity;
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.TextView;
public class MainActivity extends Activity {
Button bshared;
TextView tv;
String x;
SharedPreferences pref;
Editor edit;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bshared = (Button) findViewById(R.id.bshared);
tv = (TextView) findViewById(R.id.tv);
tv.setText(x);
bshared.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pref=getApplicationContext().getSharedPreferences("details",1);
edit = pref.edit();
edit.clear();
edit.putString("name", "These are new values");
edit.commit();
x = pref.getString("name", "");
}
});
}
}
编辑:
tv.setText(x);
textview
在您更改文本之前设置文本。因此它不会反映在文本视图中。更改字符串的值后,将此行添加到onclick
方法的最后一行
package com.example.shared;
import android.app.Activity;
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.TextView;
public class MainActivity extends Activity {
Button bshared;
TextView tv;
String x;
SharedPreferences pref;
Editor edit;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bshared = (Button) findViewById(R.id.bshared);
tv = (TextView) findViewById(R.id.tv);
tv.setText(x);
bshared.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pref=getApplicationContext().getSharedPreferences("details",1);
edit = pref.edit();
edit.clear();
edit.putString("name", "These are new values");
edit.commit();
x = pref.getString("name", "");
}
});
}
}
编辑:
tv.setText(x);
在单击方法中,必须将值设置为textview,如下代码所示
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bshared = (Button) findViewById(R.id.bshared);
tv = (TextView) findViewById(R.id.tv);
pref=getApplicationContext().getSharedPreferences("details",1);
x = pref.getString("name", "");
tv.setText(x);
bshared.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
edit = pref.edit();
edit.clear();
edit.putString("name", "These are new values");
edit.commit();
x = pref.getString("name", "");
tv.setText(x);
}
});
}
}
在单击方法中,必须将值设置为textview,如下代码所示
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bshared = (Button) findViewById(R.id.bshared);
tv = (TextView) findViewById(R.id.tv);
pref=getApplicationContext().getSharedPreferences("details",1);
x = pref.getString("name", "");
tv.setText(x);
bshared.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
edit = pref.edit();
edit.clear();
edit.putString("name", "These are new values");
edit.commit();
x = pref.getString("name", "");
tv.setText(x);
}
});
}
}
这里发生了什么,新值没有更新??是的,新值没有更新。如果我在onclick方法的末尾设置text,该值将被更新。但是,当我重新启动应用程序时,该值没有反映。SharedReferences在绑定正确后应该保存这些值?这里发生了什么,新值不会更新?是的,新值不会更新。如果我在onclick方法的末尾设置text,该值将被更新。但是,当我重新启动应用程序时,该值没有反映。SharedReferences在绑定正确后应该保存这些值?你说的很好。但是,当我重新启动应用程序时,该值并没有反映出来。SharedReferences在绑定后应该保存这些值,对吗?是的,因为您的textview从x获取值,而x在启动时的值为null。您仅在单击按钮时才将值设置为x。请参见我的编辑..这非常有效,但在最小化一次后,值不会立即反映出来,因为在创建时,字符串“name”没有值您确定已将tv.settext(x)添加到onclick的末尾??该死,我忘了添加它,谢谢你,我的问题已经解决了。你说的很好。但是,当我重新启动应用程序时,该值并没有反映出来。SharedReferences在绑定后应该保存这些值,对吗?是的,因为您的textview从x获取值,而x在启动时的值为null。您仅在单击按钮时才将值设置为x。请参见我的编辑..这非常有效,但在最小化一次后,值不会立即反映出来,因为在创建时,字符串“name”没有值您确定已将tv.settext(x)添加到onclick的末尾??该死,我忘了添加它,谢谢你,我的问题已经解决了。你说的很好。但是,当我重新启动应用程序时,该值并没有反映出来。Sharedpreferences在绑定正确后应保存这些值?为此,必须在onClick之前设置共享首选项值。看看我的代码。它设置了以前存储的共享首选项值。这非常有效,但在最小化一次后,该值不会在我单击它时立即反映出来,它会被更新,因为在创建时,字符串“name”没有值,您所说的很好。但是,当我重新启动应用程序时,该值并没有反映出来。Sharedpreferences在绑定正确后应保存这些值?为此,必须在onClick之前设置共享首选项值。看看我的代码。它设置了以前存储的共享首选项值。这非常有效,但在最小化一次后,该值不会在我单击它时立即反映出来,因为在创建时,字符串“name”没有值