我在Activity中有editText。我使用SharedPreference来保存这个值,然后再使用它。我将此edittext值传递给另一个活动按钮文本。我需要在来自edittext的文本时增加按钮。但问题是如果我输入文本,测试然后按钮是用测试文本创建的。如果我创建test1,则按test test替换为test1。我需要展示测试& test1有两个按钮。
代码:
的活动:
et=(EditText)findViewById(R.id.et);
et1=(EditText)findViewById(R.id.et1);
btn=(Button)findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
SharedPreferences preferences = getSharedPreferences("sample",0);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("Name",et.getText().toString());
editor.putString("Name1",et1.getText().toString());
editor.commit();
Intent intent = new Intent(Activity.this, Activity1.class);
startActivity(intent);
}
});
活性1:
LinearLayout layout = (LinearLayout) findViewById(R.id.linear);
SharedPreferences preferences = getSharedPreferences("sample",0);
String Namestr=(preferences.getString("Name",""));
String newString="";
if(Namestr.length()>0&& Namestr.equalsIgnoreCase(newString)){
newString=Namestr;
Button button = new Button(Get.this);
// button.setText("hellow");
button.setText(preferences.getString("Name", ""));
layout.addView(button);
的xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_marginTop="0dp"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:id="@+id/linear" >
它只显示一个按钮。如果我输入test它会显示带有测试文本的按钮,然后我输入test2它用test2替换测试。我不想替换需要用test2创建新按钮的文本。
答案 0 :(得分:1)
<强> MainActivity.java 强>
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final EditText et = (EditText) findViewById(R.id.et);
EditText et1 = (EditText) findViewById(R.id.et1);
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
final Map<String, String> demomap = new HashMap<String, String>();
demomap.put(et.getText().toString(), et.getText().toString());
SharedPreferences preferences = getSharedPreferences("sample",
0);
SharedPreferences.Editor editor = preferences.edit();
for (Entry<String, String> entry : demomap.entrySet()) {
editor.putString(entry.getKey(), entry.getValue());
}
editor.commit();
Intent intent = new Intent(MainActivity.this,
secondactvity.class);
startActivity(intent);
}
});
}
}
<强> secondActivity.java 强>
public class secondactvity extends Activity {
private HashMap<String, String> demomap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button back = (Button) findViewById(R.id.button2);
demomap = new HashMap<String, String>();
SharedPreferences preferences = getSharedPreferences("sample", 0);
for (Entry<String, ?> entry : preferences.getAll().entrySet()) {
demomap.put(entry.getKey(), entry.getValue().toString());
}
LinearLayout layout = (LinearLayout) findViewById(R.id.linear);
Iterator myVeryOwnIterator = demomap.keySet().iterator();
while (myVeryOwnIterator.hasNext()) {
String key = (String) myVeryOwnIterator.next();
String value = (String) demomap.get(key);
Button button = new Button(this);
button.setText(value);
layout.addView(button);
}
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
现在我希望它的问题得到解决。
答案 1 :(得分:0)
你必须动态创建Button,
Button btn = new Button(this); //根据需要设置按钮属性和布局参数。
答案 2 :(得分:0)
尝试下面的代码作为参考,并开发自己的逻辑。
String newString="";
if(Namestr.length()>0 && Namestr.equalIgnoreCase(newString)){
newString=namestr;
//YOUR STUFF
}
答案 3 :(得分:0)
现在我创建了用于存储数据的不同密钥。 比如Name1,Name2就像明智一样
SharedPreferences preferences = getSharedPreferences("sample",0);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("Count", 5);//say
for(int i=1; i<=5;i++)
{
editor.putString("Name"+i,et.getText().toString());
}
editor.commit();
用于检索
SharedPreferences preferences = getSharedPreferences("sample",0);
int count=preferences.getInt("Count", 0);
for(int i=1;i<=count;i++)
{
Button button = new Button(this);
button.setText(preferences.getString("Name"+i, ""));
layout.addView(button);
}
希望这对你有用。 但是,而不是sharedPreference使用数据库来存储它。