2016-05-31 61 views
0

我想要做的就是創建一個動態創建按鈕並自動使用文本「tarr」填充的類。所以,我產生一個新的類,並寫在它下面:類中的android按鈕

import android.widget.Button; 

public class FloatButton { 
    Button button = new Button(this); 

    button.setText("tarr"); 
} 

在我的主要活動應該使這個類的一個對象。所以我寫了這個活動(片段):

... 

public void onCreate() { 
    super.onCreate(); 

    FloatButton myButton = new FloatButton(); 
} 

可悲的是,這給了我一些錯誤標記。我不明白的錯誤是爲什麼'這'被標記。你能告訴我這個問題嗎?

+1

使用Context類型的參數在FloatButton中創建構造函數。將其存儲在一個字段中。最後,而不是使用這個使用上下文變量 –

+0

請你可以添加錯誤logcat輸出:)? – FrenchFalcon

+0

@MalteseFalcon代碼不會編譯。 Android之前的 –

回答

0

當發送thisButton構造方法,你是不是發送 有效Context,但你的FloatButton對象。

Android Context

你可以做的是:

public class FloatButton { 
     private Context _context; 

     public FloatButton(Context context) { 
      this._context = context; 
     } 
     public createButton() { 
      Button mButton = new Button(_context); 
      mButton.setText("tarr"); 
     } 
    } 

PS:爲什麼你想在一個單獨的類來創建一個按鈕,而不是直接在您的活動?

0

您正試圖動態創建按鈕,然後將其添加到您的活動中。 你做錯事情顯然沒有提供任何上下文和兩個,你沒有將它添加到你的活動的佈局沒有它,你將無法實際'顯示'按鈕。 這裏有您需要做什麼:

  1. 創建,其接收範圍內,並返回一個按鈕對象作爲FloatButton類的函數:

    public Button createNew(Context c){ 
    Button b = new Button(c); 
    b.setText("tarr"); 
    return b; 
    

    }

  2. 在主類,創建一個FloatButton對象並調用createNew函數,如下所示:

FloatButton fb = new FloatButton(); 
Button button = fb.createNew(this); 

這會給你一個按鈕對象,你就必須添加到您的佈局

  • 現在你需要聲明它們是高度強制性佈局參數和寬度。做得一樣:
  • LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, 
    LayoutParams.WRAP_CONTENT); 
    
  • 讓您的作業的主要佈局(的LinearLayout或RelativeLayout的)爲:
  • 的LinearLayout LL =(的LinearLayout)findViewById(R.id。layout_main);

    其中layout_main是佈局的id

  • 最後添加按鈕的佈局,並設置其佈局參數爲:
  • LL .addView(button,lp);

    雖然我不建議做這樣的事,因爲你可以在你的主類取代FloatButton類的創建和使用實例化一個簡單的Button button = new Button(this)本身。所以,除非你想在FloatButton類中爲你的按鈕做幾次定製,比如使它成爲不同的顏色或者其他東西,並且在幾個地方多次創建按鈕,那麼這是非常多餘的。