2012-08-23 39 views
0

我無法使Android onClick事件正常工作。我已經在activity_main.xml中呈現了一個TextView和一些按鈕。在MainActivity.java中,我嘗試將onClick事件附加到所有按鈕,這些按鈕將其值添加到輸入字段。然而,我很難找到一些關於撥號器工作的教程,書籍等。我有三本書,但都沒有談到使用通話功能或撥打電話。我在網上找到的教程都是關於人們向用戶展示如何爲其撥號程序創建根和主題,而不是如何編程撥號程序。所以我的問題:Android:OnClick按鈕不向文本視圖添加/刪除值

1)我在錯誤的地方附加一個值到我的文本視圖? 2)如何使用del onClick事件刪除最後一個值? 3)當用戶點擊它時,如何阻止文本視圖拉起鍵盤?即如何使其禁用/只讀(可能),所以只有按鈕可以更新它?

感謝您的幫助。在下面的代碼中,我將按鈕切成了一個。我所做的全部都是複製所有按鈕並更改ID,文本等。所有的方法都是相同的,但我無法得到一個按鈕的工作。再次,請不要在下面的代碼中嘲笑我。

activity_main.xml中:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/mainlayout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:text="@string/title_two" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:ems="10" 
    android:maxLength="15" > 
    <requestFocus /> 
</EditText> 

<LinearLayout 
    android:orientation="horizontal" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" > 
    <Button 
     android:id="@+id/one" 
     android:layout_width="93dp" 
     android:layout_height="wrap_content" 
     android:text="1" /> 
    <Button 
     android:id="@+id/two" 
     android:layout_width="93dp" 
     android:layout_height="wrap_content" 
     android:text="2" /> 
    <Button 
     android:id="@+id/three" 
     android:layout_width="93dp" 
     android:layout_height="wrap_content" 
     android:text="3" /> 
</LinearLayout> 
<LinearLayout 
    android:orientation="horizontal" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" > 
    <Button 
     android:id="@+id/four" 
     android:layout_width="93dp" 
     android:layout_height="wrap_content" 
     android:text="4" /> 
    <Button 
     android:id="@+id/five" 
     android:layout_width="93dp" 
     android:layout_height="wrap_content" 
     android:text="5" /> 
    <Button 
     android:id="@+id/six" 
     android:layout_width="93dp" 
     android:layout_height="wrap_content" 
     android:text="6" /> 
</LinearLayout> 
<LinearLayout 
    android:orientation="horizontal" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" > 
    <Button 
     android:id="@+id/seven" 
     android:layout_width="93dp" 
     android:layout_height="wrap_content" 
     android:text="7" /> 
    <Button 
     android:id="@+id/eight" 
     android:layout_width="93dp" 
     android:layout_height="wrap_content" 
     android:text="8" /> 
    <Button 
     android:id="@+id/nine" 
     android:layout_width="93dp" 
     android:layout_height="wrap_content" 
     android:text="9" /> 
</LinearLayout> 
<LinearLayout 
    android:orientation="horizontal" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" > 
    <Button 
     android:id="@+id/star" 
     android:layout_width="93dp" 
     android:layout_height="wrap_content" 
     android:text="*" /> 
    <Button 
     android:id="@+id/zero" 
     android:layout_width="93dp" 
     android:layout_height="wrap_content" 
     android:text="0" /> 
    <Button 
     android:id="@+id/pound" 
     android:layout_width="93dp" 
     android:layout_height="wrap_content" 
     android:text="#" /> 
</LinearLayout> 
<LinearLayout 
    android:orientation="horizontal" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" > 
    <Button 
     android:id="@+id/callButton" 
     android:layout_width="93dp" 
     android:layout_height="wrap_content" 
     android:text="Call" /> 
    <Button 
     android:id="@+id/contacts" 
     android:layout_width="93dp" 
     android:layout_height="wrap_content" 
     android:text="Con" /> 
    <Button 
     android:id="@+id/del" 
     android:layout_width="93dp" 
     android:layout_height="wrap_content" 
      android:text="Del" /> 
    </LinearLayout> 

</LinearLayout> 

而且MainActivity.java:

package com.example.dialertest 

import android.app.Activity; 
import android.content.Intent; 
import android.content.ActivityNotFoundException; 
import android.net.Uri; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class MainActivity extends Activity { 
Button oneBtn; 
Button twoBtn; 
Button threeBtn; 
Button fourBtn; 
Button fiveBtn; 
Button sixBtn; 
Button sevenBtn; 
Button eightBtn; 
Button nineBtn; 
Button starBtn; 
Button zeroBtn; 
Button poundBtn; 
Button callBtn; 
Button conBtn; 
Button delBtn; 
EditText numTxt; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    oneBtn = (Button) findViewById(R.id.one); 
    twoBtn = (Button) findViewById(R.id.two); 
    threeBtn = (Button) findViewById(R.id.three); 
    fourBtn = (Button) findViewById(R.id.four); 
    fiveBtn = (Button) findViewById(R.id.five); 
    sixBtn = (Button) findViewById(R.id.six); 
    sevenBtn = (Button) findViewById(R.id.seven); 
    eightBtn = (Button) findViewById(R.id.eight); 
    nineBtn = (Button) findViewById(R.id.nine); 
    starBtn = (Button) findViewById(R.id.star); 
    zeroBtn = (Button) findViewById(R.id.zero); 
    poundBtn = (Button) findViewById(R.id.pound); 
    callBtn = (Button) findViewById(R.id.callButton); 
    conBtn = (Button) findViewById(R.id.contacts); 
    delBtn = (Button) findViewById(R.id.del); 

    numTxt = (EditText) findViewById(R.id.editText1); 

    oneBtn.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      oneBtn.setText("1"); 
      numTxt.setText(numTxt.getText() + " " + oneBtn.getText()); 
      //numTxt.append("1"); 
     } 
    }); 
/**private void performDial(String numberString) { 
    if (!numberString.equals("")) { 
     Uri number = Uri.parse("tel:" + numberString); 
     Intent dial = new Intent(Intent.ACTION_CALL, number); 
     startActivity(dial); 
    } 
}*/ 

/*private void call() { 
    try { 
     Intent callIntent = new Intent(Intent.ACTION_CALL); 
     callIntent.setData(Uri.parse("tel: 8880000000")); 
     startActivity(callIntent); 
    } catch(ActivityNotFoundException e) { 
     Log.e("Dialed Number","Call Failed", e); 
    } 
} 
}*/ 
    } 
} 

回答

1

改變你的onClicklistener這樣:

oneBtn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // no need to use onBtn here cuz the param v is the clicked View 
     Button clickedButton = (Button) v; 
     clickedButton.setText("1"); 
     numTxt.setText(numTxt.getText().toString() + " " + clickedButton.getText()); 
     //numTxt.append("1"); 
    } 
}); 

EDITTEXT的的getText()方法返回一個可編輯對象,見:

http://developer.android.com/reference/android/widget/EditText.html#getText() http://developer.android.com/reference/android/text/Editable.html

+0

這個叫toString()對我不起作用。點擊一個按鈕仍然不起作用。 –

+0

你是否錯過「new View.OnClickListener(){」中的** @ Override **?根據你的編譯設置,這可能是罪魁禍首。 – petey

+0

如何檢查我的編譯設置?或者是指我正在使用什麼API的adobe? –

1

用於獲取的edittext文本必須經過getText()

numTxt.setText(numTxt.getText().toString() + " " + clickedButton.getText()); 
+0

這對我也不適用。點擊一個按鈕仍然不起作用。 –

+0

也給你+1。這不適合我,但它是我的第一個問題的正確答案,我知道問題在其他地方,我必須跟蹤它們。 –