2012-12-29 22 views
0

我完全不熟悉Java和android。我結束了一個教程,我正在構建一個簡單的計算器來學習繩索。從觸發onclick的視圖獲取信息?

我基本上有這樣的觀點:

<button android:onClick="addText" android:text="2" /> 

和功能addText是這樣的:

public void addText(View view) { // Add view's text 
    TextView calc = (TextView) findViewById(R.id.edit_text); 
    t.setText(calc.getText() + ?????); 
} 

的onclick應該從點擊的按鈕添加文本到一個TextView。如果您單擊1,則它會執行calc.getText() + "1",如果您單擊它2 does calc.getText() + "2"。我不知道如何獲取點擊視圖的文本。我試過這個:t.setText(calc.getText() + this.getText());哪個沒有用。這是如何完成的?

回答

1

你可以這樣做:

public void addText(View view) { // Add view's text 
    Button button = (Button) view; //casts the View into the Button class 
    TextView calc = (TextView) findViewById(R.id.edit_text); 
    t.setText(calc.getText().toString() + button.getText().toString()); 
} 

既然我們知道ButtonView一個子類,而getText()方法適用於按鈕,我們可以做一個新的變量,並打開View參數爲Button,通過class casting。從那裏我們可以使用所有的Button的方法並繼續執行。

+0

感謝。我剛剛實施它。你可以在解釋它的第二行旁邊添加一些註釋。我想知道更多這如何工作。反正沒關係。 – lisovaccaro

+0

@ Liso22我增加了一些信息。 –

0

另一種方式是通過TAG對象設置爲你的意見

Button mButtonCalcOne = (Button) findViewById(R.id.Button1); 
mButtonCalcOne.setTag(1); 

OnClickListener mButtonListener = new OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
     int lButtonValue = (Integer) v.getTag(); //DO STH WITH IT ;) 
    }; 
} 
mButtonCalcOne.setOnClickListener(mButtonListener);