2017-07-24 35 views
0

當前我設法在視圖上動態創建按鈕在Android Studio中動態添加和保存按鈕

以下是我創建按鈕的代碼;

public void Add_on(View v) { 
     AlertDialog.Builder mbuilder = new AlertDialog.Builder(Mb.this); 
     View mview = getLayoutInflater().inflate(R.layout.activity_mb1, null); 
     EditText number = (EditText) mview.findViewById(R.id.etnum); 
     Button Create = (Button) mview.findViewById(R.id.etcreate); 
     Button Cancel = (Button) mview.findViewById(R.id.etcancel); 

     Create.setOnClickListener(new View.OnClickListener(){ 
      @Override 
      public void onClick(View view){ 

       if (!number.getText().toString().isEmpty()) 
       { 
        Toast.makeText(Mb.this, "Number can be NULL",Toast.LENGTH_SHORT).show(); 


        LinearLayout yenilayout = new LinearLayout(Mb.this); 
        int n =1; 
        for(int i=0; i<n; i++) 
        { 
         Button yeniButton = new Button(Mb.this); 
         yenilayout.addView(yeniButton); 

         yeniButton.setOnClickListener(new View.OnClickListener() { 
          @Override 
          public void onClick(View v) { 
           Toast.makeText(Mb.this, "Button is working",Toast.LENGTH_SHORT).show(); 
          } 
         }); 

        } 
        altlayout.addView(yenilayout); 


       } else { 
        Toast.makeText(Mb.this, "Number cannot be NULL",Toast.LENGTH_SHORT).show(); 

       } 

      } 
     }); 

但是,只要我記得活動,按鈕不再存在。所以我可以知道我可以永久放置按鈕嗎?

感謝您的建議

+0

每次活動重新創建時,您都必須點擊該「創建」按鈕才能獲得這些動態按鈕。 PS:使用小寫首字母變量和大寫首字母作爲類的標準 – ZeekHuge

回答

0

您可以使用Bundle保存一個活動的狀態和onCreate()方法重新創建它。這適用於Activity的特定實例,因此可用於保存有關選擇或用戶輸入等的數據,但而不是您需要在應用程序啓動時持久存儲數據。

要使用Bundle,請覆蓋Activity類中的onSaveInstanceState(Bundle)onRestoreInstanceState(Bundle)方法。您可以使用Bundle中的方法將您喜歡的任何數據保存到地圖中,然後將其返回到onRestoreInstanceState(Bundle),該地址在onStart()中調用。

的缺省實現已經處理大部分UI的東西,雖然,我還以爲這將保持跟蹤你的按鈕給你,所以它可能是你的問題其實是關於某些持久性數據與您的應用關聯。 (這也意味着如果你重寫上面的方法,你應該確保在實現的第一行中調用超級方法)。

如果您需要跨應用程序啓動的持久性數據,那麼最快和最簡單的方法是使用SharedPreferences,例如this答案。