【问题标题】:Kindly help me with error com.maju.yourApp has stopped unexpectidly请帮助我解决错误 com.maju.your App 已意外停止
【发布时间】:2012-11-11 15:40:35
【问题描述】:

我正在制作一个提供拨号器功能的应用程序。我已经创建了一个键盘并在它后面提供了一个键盘的功能。它应该检测来电,使用 telephonyManager 等拨打电话。但是当我运行代码时,它会给出以下错误:

抱歉,com.maju.yourApp 意外停止

我的代码没有任何错误,我也不知道原因。有人可以确定问题的原因吗?我正在尝试的代码如下:

公共类 MainActivity 扩展 Activity {

EditText ed =(EditText) findViewById(R.id.editText1);
String number;
Intent intent;

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

    PhoneCallListener listenerObj = new PhoneCallListener();
    TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
    tm.listen(listenerObj,PhoneStateListener.LISTEN_CALL_STATE);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
}


public void one_btn(View v)
{
    number = number+"1";
    ed.setText(number);
}

public void two_btn(View v)
{
    number = number+"2";
    ed.setText(number);
}

public void three_btn(View v)
{
    number = number+"3";
    ed.setText(number);
}

public void four_btn(View v)
{
    number = number+"4";
    ed.setText(number);
}

public void five_btn(View v)
{
    number = number+"5";
    ed.setText(number);
}

public void six_btn(View v)
{
    number = number+"6";
    ed.setText(number);
}

public void seven_btn(View v)
{
    number = number+"7";
    ed.setText(number);
}

public void eight_btn(View v)
{
    number = number+"8";
    ed.setText(number);
}

public void nine_btn(View v)
{
    number = number+"9";
    ed.setText(number);
}

public void esterisk_btn(View v)
{
    number = number+"*";
    ed.setText(number);
}

public void zero_btn(View v)
{
    number = number+"0";
    ed.setText(number);
}

public void hash_btn(View v)
{
    number = number+"#";
    ed.setText(number);
}

public void call_btn(View v)
{
    intent = new Intent(Intent.ACTION_CALL);
    intent.setData(Uri.parse("tel:" + number));
    startActivity(intent);
}

public void back_btn(View v)
{
    if(number.length() > 0)
    {
        String temp = "";

        for(int i=0; i<number.length() - 1; i++)
        {
            temp += number.charAt(i);
        }

        number = temp;
    }
}

private class PhoneCallListener extends PhoneStateListener
{
    long start;
    long end;
    Context context = getApplicationContext();
    Toast toast;
    boolean flag = false;

    public void onCallStateChanged(int state, String incomingNumber)
    {
        if(TelephonyManager.CALL_STATE_OFFHOOK == state)
        {
            start = System.currentTimeMillis();
            Log.i("Log" , "Phone State Calling");
            toast = Toast.makeText(context, "Phone State Calling" , Toast.LENGTH_LONG);
            toast.show();
            flag = true;
        }

        else if(TelephonyManager.CALL_STATE_IDLE == state)
        {
            Log.i("Log" , "Phone State Idle");
            toast = Toast.makeText(context, "Phon State Idle", Toast.LENGTH_LONG);
            toast.show();

            if(flag)
            {
                end = System.currentTimeMillis();
                long duration = (end - start)/1000;
                Log.i("Log" , "Call Ended, Duration: "+ duration);

                toast = Toast.makeText(context, "Call Ended\n Duration: "+ duration, Toast.LENGTH_LONG);
                toast.show();

                flag = false;
            }
        }

        else if(TelephonyManager.CALL_STATE_RINGING == state)
        {
            Log.i("Log", "Incoming Call From " + incomingNumber);
            toast = Toast.makeText(context, "Incoming Call: "+ incomingNumber, Toast.LENGTH_LONG);
            toast.show();
        }


    }

}

}

【问题讨论】:

    标签: android telephony mobile-application phone-call


    【解决方案1】:

    你的问题在这里:

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

    在使用 setContentView 之前,您不能使用 findViewById。

    将这一行移到 onCreate 中,在 setContentView() 之后。

    以后不要想“我的代码没有任何错误”。您的实际意思是编译器没有向您显示任何错误,但您确实(至少)有一个错误。这一点很重要,因为没有编译器错误只是解决您是否有任何错误的第一步。在询问崩溃时,还请按照习惯发布 logcat 堆栈跟踪。我敢打赌你的显示一个“空指针异常”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-28
      • 1970-01-01
      • 2022-10-17
      • 1970-01-01
      • 1970-01-01
      • 2021-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多