2014-01-14 123 views
-2

我需要通過單擊另一個按鈕(添加新)來添加按鈕。我對按鈕的代碼添加新按鈕如何通過單擊另一個按鈕來添加新按鈕

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(); 
    } } 
+1

你應該瞭解的基本知識,因爲你的問題是關於國家應用程序和活動生命週期。沒有知識就不應該開始編碼。 – TommyNecessary

+0

檢查此鏈接http://stackoverflow.com/questions/18757381/saving-dynamically-added-linearlayouts-without-using-savedinstancestate – Ranjit

回答

1

後,您需要保存創建按鈕持續某處。您使用的代碼不會更改您的佈局xml,它將在您的ActivityonCreate()中加載。您可以使用SharedPreferences保存所創建Button S上的號碼,然後在你的onCreate()

+0

你能告訴我哪裏需要添加共享偏好 –

+0

當你創建一個新的,您可以將其添加按鈕來保存這個按鈕,或者你可以將它添加到onPause()來保存你的應用程序退出查看之前你已經有的按鈕總數 –

1

setContentView()後添加到代碼中,你需要添加sharedpreferences創建按鈕的數量,並在上創建,循環到計數和創建這些按鈕。

中的onCreate GET 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(); 
    } 
} 

在的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); 
} 

您也可以將添加按鈕代碼放在另一個函數中並調用它。在的onCreate

SharedPreferences prefs=null; 

這:

不要在onCreate聲明sharedpref, 寫這活動

prefs = PreferenceManager.getDefaultSharedPreferences(this); 
+0

你能告訴我需要添加共享首選項嗎 –

+0

檢查我編輯的答案。 –

+0

對於「count = prefs.getBoolean(」count「,0);」 showin錯誤類型SharedPreferences中的方法getBoolean(String,boolean)不適用於參數(String,int) –

相關問題