如何通过单击另一个按钮添加新按钮

时间:2014-01-14 10:32:42

标签: android button android-linearlayout

我需要通过点击另一个按钮添加按钮(添加新按钮)。我的按钮代码添加了新按钮

addnew = (Button)findViewById(R.id.btnaddnew);
    addnew.setOnClickListener(this);
public void onClick(View v) {
if(v == addnew)
    {
        Button myButton = new Button(this);
        myButton.setText("New Button");
        myButton.setId(some_random_id);
        LinearLayout ll = (LinearLayout)findViewById(R.id.layout1);
        LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        ll.addView(myButton, lp);
    }
}

上面的代码可以很好地添加按钮到布局,但在关闭应用程序后再次重新打开它时,之前添加的新按钮不存在。有人可以提供帮助

实施sharedprefrences之后 onCreate的代码

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ListView lvInb = (ListView) findViewById(R.id.lvInb);
    addnew = (Button)findViewById(R.id.btnaddnew);
    addnew.setOnClickListener(this);
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

onClick的代码

public void onClick(View v) {
if(v == addnew)
    {
        count = prefs.getInt("count", 0);
        for(int i=0;i<count;i++){
        Button myButton = new Button(this);
        myButton.setText("New Button");
        LinearLayout ll = (LinearLayout)findViewById(R.id.layout1);
        LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        ll.addView(myButton, lp);
        count++;
        Editor editor = prefs.edit();
        editor.putInt("count", count);
        editor.commit();
    } }

2 个答案:

答案 0 :(得分:1)

您需要将创建的按钮永久保存在某处。您使用的代码不会更改将在onCreate()的{​​{1}}中加载的Layout xml。您可以使用Activity保存自己创建的SharedPreferences个,然后在Button

setContentView()之后按代码添加它们

答案 1 :(得分:1)

您需要添加在sharedpreferences中创建的按钮数量,然后在创建,循环中添加到该计数并创建这些按钮。

在onCreate中获取sharedpref:

prefs = PreferenceManager.getDefaultSharedPreferences(this);

使全局变量计数:

int count=0;

当您添加新按钮时增加计数:

addnew = (Button)findViewById(R.id.btnaddnew);
    addnew.setOnClickListener(this);
public void onClick(View v) {
if(v == addnew)
    {
        Button myButton = new Button(this);
        myButton.setText("New Button");
        myButton.setId(some_random_id);
        LinearLayout ll = (LinearLayout)findViewById(R.id.layout1);
        LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        ll.addView(myButton, lp);
        count++;
        Editor editor = prefs.edit();
    editor.putInt("count", count);
    editor.commit();
    }
}

on onCreate:

count=prefs.getInt("count", 0);
for(int i=;i<count;i++){
        Button myButton = new Button(this);
        myButton.setText("New Button");
        myButton.setId(some_random_id);
        LinearLayout ll = (LinearLayout)findViewById(R.id.layout1);
        LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        ll.addView(myButton, lp);
}

你也可以在另一个函数中添加按钮代码并调用它。

请勿在{{1​​}}中声明sharedpref, 在活动中写下这个:

onCreate

和onCreate:

SharedPreferences prefs=null;