0

我在活动中有editText。我使用 SharedPreference 来保存此值并稍后获取。我将此edittext 值传递给另一个活动按钮文本。当文本来自edittext时,我需要增加按钮。但问题是如果我输入文本,测试然后按钮是用测试文本创建的。如果我创建 test1,则按钮测试将替换为 test1。我需要用两个按钮显示 test & 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 创建新按钮的文本。

4

4 回答 4

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();

            }
        });
    }
}

现在我希望它的问题得到解决。

于 2013-09-20T09:04:08.273 回答
0

您必须动态创建按钮,例如,

按钮 btn=新按钮(此);//根据需要设置按钮属性和布局参数。

于 2013-09-20T08:48:32.200 回答
0

尝试以下代码作为参考,并开发您自己的逻辑。

 String newString="";

     if(Namestr.length()>0 && Namestr.equalIgnoreCase(newString)){

    newString=namestr;
    //YOUR STUFF

    }
于 2013-09-20T09:02:04.280 回答
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 使用数据库来存储它。

于 2013-09-20T09:05:41.717 回答