0

一度に 2 つのメソッドを呼び出すボタンがあります。それが alarm() と sms() です。ボタンをクリックすると、AlertDialog が表示されますが、「STOP」ボタンを押す前に消えてしまいます。それが消えた直後に、私はSMSを受け取ります。戻るボタンを押すと、AlertDialog が再び表示されます。どうやら私はクラッシュか何かをしたようです。

onCreate() メソッド:

btnAlarm = (Button) findViewById(R.id.btnAlarm);
        btnAlarm.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                alarm();
                sms();

            }
        });

alarm() メソッド:

public void alarm()
    {
        Alarm1 = MediaPlayer.create(MySetting.this, R.raw.lingcoll);

        //Turn on the alarm sound
        Alarm1.setLooping(true); // Set looping
        Alarm1.start();

        AlertDialog.Builder builder = new AlertDialog.Builder(MySetting.this);
        builder.setMessage(R.string.alert_stop)
            .setIcon(android.R.drawable.ic_alert)
            .setTitle(R.string.alert_dialog_warning)
            .setCancelable( false )
            .setPositiveButton(R.string.alert_btnStop, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {


                    Alarm1.stop();
                    MySetting.isAlarm = false;

                }
            });

        AlertDialog alert = builder.create();
        alert.show();

        }

sms() メソッド:

public void sms() 
    {   

        TextView a = (TextView) findViewById(R.id.txtPhoneNo);

            String phoneNo = a.getText().toString();

            String message = "My Application works!";

                    PendingIntent pi = PendingIntent.getActivity(this, 0,
                new Intent(this, FinalSetting.class), 0);                
                SmsManager sms = SmsManager.getDefault();
                sms.sendTextMessage(phoneNo, null, message, pi, null);


    }

LogCat は問題ないように見えるので、何が問題なのかわかりません。誰もこれを防ぐ方法を知っていますか??? 事前にどうもありがとう..

4

1 に答える 1

0

どこかにコンテキストスイッチがあるようです。contextView をどこかに設定しているか、何かがクラッシュしています。

あなたが戻ってきたときにDialogがまだスタック内で生きているので、contextViewをどこかに設定しているだけだと思います。また、ダイアログのオンクリックを閉じることを確認してください。

最後に、onclick ダイアログで使用している変数が final である必要があることを確認する必要がある場合があります。通常、Eclipse はこれをキャッチしますが、クラッシュを引き起こす可能性があります。

于 2012-06-08T15:00:10.187 に答える