【问题标题】:Android: OnClick Button Doesn't Append/Delete Value to Text ViewAndroid:OnClick 按钮不会将值附加/删除到文本视图
【发布时间】:2012-08-23 16:15:14
【问题描述】:

我根本无法让 Android onClick 事件工作。我在activity_main.xml 中渲染了一个TextView 和一些按钮。在 MainActivity.java 中,我尝试将onClick 事件附加到所有将其值附加到输入字段的按钮。但是,我很难找到一些关于使拨号器工作的教程、书籍等。我有三本书,没有一本谈论使用呼叫功能或制作拨号器。我在网上找到的教程都是关于人们向用户展示如何 root 和主题他们的拨号器,而不是如何编程。所以我的问题:

1) 将值附加到我的文本视图中哪里出错了? 2) 如何使用 del onClick 事件删除最后一个值? 3)当用户点击它时,如何阻止文本视图拉起键盘? IE。如何使其禁用/只读(也许)以便只有按钮可以更新它?

感谢您的帮助。在下面的代码中,我将按钮缩减为一个。我所做的只是复制所有按钮并更改 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);
    }
}
}*/
    }
}

【问题讨论】:

    标签: java android mobile android-intent android-activity


    【解决方案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

    【讨论】:

    • 这对我不起作用。单击一个按钮仍然没有任何作用。
    • 您是否仍然缺少“new View.OnClickListener(){”下的 @Override?根据您的编译设置,这可能是罪魁祸首。
    • 如何检查我的编译设置?或者说这意味着我使用的是什么 API?
    • 在eclipse中,右键项目>属性>Java编译器>配置工作区设置(或启用项目特定设置)>“编译器合规级别”应为1.6
    • 好的。我会试试的。我刚刚从使用实际设备的人那里得到消息,他们能够很好地打开它。所以我正在研究这是否是模拟器问题。我现在倾向于这样做,因为我看到的每一篇文章都显示了你的确切代码。所以我知道你的权利,但是我的代码或编译器或模拟器中的其他地方存在冲突......但是+1是有序的,因为你对我的第一个问题有正确的答案,我只是在搞砸它在其他地方。
    【解决方案2】:

    要获取edittext 的文本,您必须在getText() 之后调用toString()

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

    【讨论】:

    • 这对我也不起作用。单击一个按钮仍然没有任何作用。
    • 也给你+1。这对我不起作用,但它是我第一个问题的正确答案,我知道问题出在其他地方,我必须找到它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多