当来自共享偏好的值时增加按钮

时间:2013-09-20 08:43:38

标签: android sharedpreferences android-edittext counter android-button

我在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创建新按钮的文本。

4 个答案:

答案 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使用数据库来存储它。