2 woouboy woouboy 于 2013.08.23 22:38 提问

android为什么我照样画葫芦总是会出错!!想不通~~高手帮忙

logcat如下:
08-23 14:32:32.586: W/KeyCharacterMap(335): No keyboard for id 0
08-23 14:32:32.586: W/KeyCharacterMap(335): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
08-23 14:32:41.207: D/AndroidRuntime(335): Shutting down VM
08-23 14:32:41.207: W/dalvikvm(335): threadid=1: thread exiting with uncaught exception (group=0x40015560)
08-23 14:32:41.227: E/AndroidRuntime(335): FATAL EXCEPTION: main
08-23 14:32:41.227: E/AndroidRuntime(335): java.lang.ClassCastException: android.widget.Button
08-23 14:32:41.227: E/AndroidRuntime(335): at com.example.android_4_2.MainActivity$1.onClick(MainActivity.java:28)
08-23 14:32:41.227: E/AndroidRuntime(335): at android.view.View.performClick(View.java:2485)
08-23 14:32:41.227: E/AndroidRuntime(335): at android.view.View$PerformClick.run(View.java:9080)
08-23 14:32:41.227: E/AndroidRuntime(335): at android.os.Handler.handleCallback(Handler.java:587)
08-23 14:32:41.227: E/AndroidRuntime(335): at android.os.Handler.dispatchMessage(Handler.java:92)
08-23 14:32:41.227: E/AndroidRuntime(335): at android.os.Looper.loop(Looper.java:123)
08-23 14:32:41.227: E/AndroidRuntime(335): at android.app.ActivityThread.main(ActivityThread.java:3683)
08-23 14:32:41.227: E/AndroidRuntime(335): at java.lang.reflect.Method.invokeNative(Native Method)
08-23 14:32:41.227: E/AndroidRuntime(335): at java.lang.reflect.Method.invoke(Method.java:507)
08-23 14:32:41.227: E/AndroidRuntime(335): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-23 14:32:41.227: E/AndroidRuntime(335): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-23 14:32:41.227: E/AndroidRuntime(335): at dalvik.system.NativeStart.main(Native Method)

代码如下:
import android.net.Uri;
import android.os.Bundle;
import android.R.string;
import android.app.Activity;
import android.content.Intent;
import android.telephony.PhoneNumberUtils;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button bCall = (Button)findViewById(R.id.TelBtn);
    bCall.setOnClickListener(
            new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO 自动生成的方法存根
                    EditText telnum =(EditText)findViewById(R.id.TelBtn);
                    String telNum = telnum.getText().toString();
                    if (PhoneNumberUtils.isGlobalPhoneNumber(telNum)) {
                        Intent i = new Intent(Intent.ACTION_DIAL,Uri.parse(
                                "tel://"+telNum));
                        MainActivity.this.startActivity(i);
                    } else {
                        Toast.makeText(MainActivity.this, "号码不正确", 5000).show();

                    }
                }
            }
            );
}

真的要把我弄疯了。。这让怎么学习啊~!希望大家帮忙,万分感谢。。

2个回答

Jave_
Jave_   2013.08.24 04:51
已采纳
EditText telnum =(EditText)findViewById(R.id.TelBtn);

这句错误,R.id.TelBtn这个指向的是个button应该

Button bCall = (Button)findViewById(R.id.TelBtn);

你看这句,你两个id都是一样的,你应该EditText指向的就为布局文件的的EditText
你这边指向了button,所以出现强制转换异常

Jave_
Jave_ logcat? 打印的信息类型不同,你可以看的出来
4 年多之前 回复
woouboy
woouboy 哇。。。终于找到原因了。能不能指点一下怎么看logcat
4 年多之前 回复
xiaoyaovsxin
xiaoyaovsxin   2013.08.24 10:59

EditText telnum =(EditText)findViewById(R.id.TelBtn);
移到click事件外面,并设置成全局变量。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!