无法实例活动 [英] Unable to instantiate activity

查看:94
本文介绍了无法实例活动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在这个机会我尝试这样做,收到了的EditText ,一个按钮一个简单的活动,并意图时,我preSS按钮拨打该号码在的EditText

活动的开始,但抛出一个异常,这样的...

  01-23 14:41:13.760:E / AndroidRuntime(305):java.lang.RuntimeException的:无法实例活动ComponentInfo {android.testcall / android.testcall.TestCallActivity} :显示java.lang.NullPointerException
 

告诉我,如果你需要更多的信息,或code,查看...

code类:

 公共类TestCallActivity延伸活动{
私人TelephonyManager _CurrTelephonyManager;
    私人PhoneStateListener phoneListener;
    最后的TextView的TextView =(TextView中)findViewById(R.id.TvResulState);
    最后的EditText phoneNumber的=(的EditText)findViewById(R.id.EtPhoneNumber);
    私人日期lastIdleTime;
    私人字符串currentPhoneState =CALL_STATE_IDLE;

    / **第一次创建活动时调用。 * /
    @覆盖
    公共无效的onCreate(包savedInstanceState){
    尝试 {
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.testcallactivity);

        phoneListener =新PhoneStateListener()
        {
            @覆盖
            公共无效onCallStateChanged(INT状态,串incomingNumber)
            {
                开关(州)
                {
                    案例TelephonyManager.CALL_STATE_IDLE:
                        lastIdleTime =新的日期();
                        currentPhoneState =CALL_STATE_IDLE;
                    打破;
                    案例TelephonyManager.CALL_STATE_OFFHOOK:
                        currentPhoneState =CALL_STATE_OFFHOOK​​;
                    打破;
                    案例TelephonyManager.CALL_STATE_RINGING:
                        currentPhoneState =CALL_STATE_RINGING;
                    打破;
                }
                textview.setText(手机状态:+ currentPhoneState);
            }
        };
        _CurrTelephonyManager.listen(phoneListener,PhoneStateListener.LISTEN_CALL_STATE);


    }赶上(异常错误){
        // TODO:处理异常
        error.printStackTrace();
    }

    最终按钮btCall =(按钮)findViewById(R.id.BtCallNumber);
        btCall.setOnClickListener(新View.OnClickListener(){
            公共无效的onClick(视图v){
                意向意图=新的意图(Intent.ACTION_CALL);
                。字符串URI =电话:+ phoneNumber.toString()修剪();
                intent.setData(Uri.parse(URI));
                startActivity(意向);
            }
    });
}
 

完全错误堆栈:

  01-23 15:25:17.234:E / AndroidRuntime(309):致命异常:主要
01-23 15:25:17.234:E / AndroidRuntime(309):java.lang.RuntimeException的:无法实例活动ComponentInfo {android.testcall / android.testcall.TestCallActivity}:显示java.lang.NullPointerException
01-23 15:25:17.234:E / AndroidRuntime(309):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
01-23 15:25:17.234:E / AndroidRuntime(309):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-23 15:25:17.234:E / AndroidRuntime(309):在android.app.ActivityThread.access $ 2300(ActivityThread.java:125)
01-23 15:25:17.234:E / AndroidRuntime(309):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2033)
01-23 15:25:17.234:E / AndroidRuntime(309):在android.os.Handler.dispatchMessage(Handler.java:99)
01-23 15:25:17.234:E / AndroidRuntime(309):在android.os.Looper.loop(Looper.java:123)
01-23 15:25:17.234:E / AndroidRuntime(309):在android.app.ActivityThread.main(ActivityThread.java:4627)
01-23 15:25:17.234:E / AndroidRuntime(309):在java.lang.reflect.Method.invokeNative(本机方法)
01-23 15:25:17.234:E / AndroidRuntime(309):在java.lang.reflect.Method.invoke(Method.java:521)
01-23 15:25:17.234:E / AndroidRuntime(309):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)
01-23 15:25:17.234:E / AndroidRuntime(309):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-23 15:25:17.234:E / AndroidRuntime(309):在dalvik.system.NativeStart.main(本机方法)
01-23 15:25:17.234:E / AndroidRuntime(309):由:显示java.lang.NullPointerException
01-23 15:25:17.234:E / AndroidRuntime(309):在android.app.Activity.findViewById(Activity.java:1637)
01-23 15:25:17.234:E / AndroidRuntime(309):在android.testcall.TestCallActivity< INIT>(TestCallActivity.java:21)
01-23 15:25:17.234:E / AndroidRuntime(309):在java.lang.Class.newInstanceImpl(本机方法)
01-23 15:25:17.234:E / AndroidRuntime(309):在java.lang.Class.newInstance(Class.java:1429)
01-23 15:25:17.234:E / AndroidRuntime(309):在android.app.Instrumentation.newActivity(Instrumentation.java:1021)
01-23 15:25:17.234:E / AndroidRuntime(309):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
 

解决方案

将这些在你的的onCreate 方法之后的setContentView

 最后的TextView TextView的=(的TextView)findViewById(R.id.TvResulState);
最后的EditText phoneNumber的=(的EditText)findViewById(R.id.EtPhoneNumber);
 

此外,删除尝试 ... 。它不会做的好。

In this opportunity I try to do a simple activity that get a EditText, a Button and make an intent when I press the button to call to the number in the EditText.

The activity start, but throw an exception like this...

01-23 14:41:13.760: E/AndroidRuntime(305): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{android.testcall/android.testcall.TestCallActivity}: java.lang.NullPointerException

Tell me if you need more info, or code to view...

code class:

public class TestCallActivity extends Activity {
private TelephonyManager _CurrTelephonyManager;
    private PhoneStateListener phoneListener;
    final TextView textview = (TextView) findViewById(R.id.TvResulState);
    final EditText phoneNumber = (EditText)findViewById(R.id.EtPhoneNumber);
    private Date lastIdleTime;
    private String currentPhoneState = "CALL_STATE_IDLE";

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    try {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.testcallactivity);

        phoneListener = new PhoneStateListener()
        {
            @Override
            public void onCallStateChanged(int state, String incomingNumber)
            {
                switch (state) 
                {
                    case TelephonyManager.CALL_STATE_IDLE:
                        lastIdleTime = new Date();
                        currentPhoneState = "CALL_STATE_IDLE";
                    break;
                    case TelephonyManager.CALL_STATE_OFFHOOK:
                        currentPhoneState = "CALL_STATE_OFFHOOK";    
                    break;
                    case TelephonyManager.CALL_STATE_RINGING:
                        currentPhoneState = "CALL_STATE_RINGING";
                    break;
                }
                textview.setText("Phone State: " + currentPhoneState);
            }
        };      
        _CurrTelephonyManager.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);


    } catch (Exception error) {
        // TODO: handle exception
        error.printStackTrace();
    }

    final Button btCall = (Button) findViewById(R.id.BtCallNumber);
        btCall.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_CALL);
                String uri = "tel:" + phoneNumber.toString().trim() ;
                intent.setData(Uri.parse(uri));
                startActivity(intent);
            }
    });
}

Full error stack:

01-23 15:25:17.234: E/AndroidRuntime(309): FATAL EXCEPTION: main
01-23 15:25:17.234: E/AndroidRuntime(309): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{android.testcall/android.testcall.TestCallActivity}: java.lang.NullPointerException
01-23 15:25:17.234: E/AndroidRuntime(309):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
01-23 15:25:17.234: E/AndroidRuntime(309):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-23 15:25:17.234: E/AndroidRuntime(309):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
01-23 15:25:17.234: E/AndroidRuntime(309):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
01-23 15:25:17.234: E/AndroidRuntime(309):  at android.os.Handler.dispatchMessage(Handler.java:99)
01-23 15:25:17.234: E/AndroidRuntime(309):  at android.os.Looper.loop(Looper.java:123)
01-23 15:25:17.234: E/AndroidRuntime(309):  at android.app.ActivityThread.main(ActivityThread.java:4627)
01-23 15:25:17.234: E/AndroidRuntime(309):  at java.lang.reflect.Method.invokeNative(Native Method)
01-23 15:25:17.234: E/AndroidRuntime(309):  at java.lang.reflect.Method.invoke(Method.java:521)
01-23 15:25:17.234: E/AndroidRuntime(309):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-23 15:25:17.234: E/AndroidRuntime(309):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-23 15:25:17.234: E/AndroidRuntime(309):  at dalvik.system.NativeStart.main(Native Method)
01-23 15:25:17.234: E/AndroidRuntime(309): Caused by: java.lang.NullPointerException
01-23 15:25:17.234: E/AndroidRuntime(309):  at android.app.Activity.findViewById(Activity.java:1637)
01-23 15:25:17.234: E/AndroidRuntime(309):  at android.testcall.TestCallActivity.<init>(TestCallActivity.java:21)
01-23 15:25:17.234: E/AndroidRuntime(309):  at java.lang.Class.newInstanceImpl(Native Method)
01-23 15:25:17.234: E/AndroidRuntime(309):  at java.lang.Class.newInstance(Class.java:1429)
01-23 15:25:17.234: E/AndroidRuntime(309):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
01-23 15:25:17.234: E/AndroidRuntime(309):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)

解决方案

Move these in your onCreate method after setContentView:

final TextView textview = (TextView) findViewById(R.id.TvResulState);
final EditText phoneNumber = (EditText)findViewById(R.id.EtPhoneNumber);

Also, remove the try...catch. It doesn't do good.

这篇关于无法实例活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆