如何在代码的最后获取变量值以在其开头使用它

时间:2011-05-14 17:19:52

标签: android alertdialog

我必须发布代码才能理解我想说的话:

public void répondre()
    {
         mt = MediaPlayer.create(context,R.raw.ringtone);
        mt.setVolume(5,5);
      mt.start();
      mt.setLooping(true);
      //startActivity((new Intent(Intent.ACTION_ANSWER)));
        AlertDialog.Builder ad = new AlertDialog.Builder(context);
        ad.setTitle("Appel en cours...");
        ad.setMessage("Voulez vous répondre à cet appel?");
        ad.setPositiveButton("Oui", 
                             new OnClickListener() {
                               public void onClick(DialogInterface dialog, 
                                                   int arg1) {
                                   mt.stop();
                                SipAudioCall incomingCall = null;
                             try {

                                     SipAudioCall.Listener listener = new SipAudioCall.Listener() {
                                        @Override
                                        public void onRinging(SipAudioCall call, SipProfile caller) {
                                            try {

                                                call.answerCall(30);
                                            } catch (Exception e) {
                                                Log.d("Call not answered","Call not answered",e);
                                            }
                                        }

                                    };

                                    SIPCommunicator wtActivity = (SIPCommunicator) context;

                                    incomingCall = wtActivity.manager.takeAudioCall(intent, listener);
                                    incomingCall.answerCall(30);
                                    incomingCall.startAudio();
                                    incomingCall.setSpeakerMode(true);
                                    if(incomingCall.isMuted()) {
                                        incomingCall.toggleMute();
                                    }

                                    wtActivity.call = incomingCall;
                                 String useName = wtActivity.call.getPeerProfile().getDisplayName();
                                    wtActivity.updateStatus("Vous êtes en communication avec " + useName);



                             } catch (Exception e) {
                                if (incomingCall != null) {
                                    incomingCall.close();
                                }
                            }
                        }

                 });

我想在AlertDialog中显示调用者的姓名(useName变量)。如果我将此行(String useName = wtActivity.call.getPeerProfile().getDisplayName();)放在MediaPlayer之前并生成ad.setTitle("Appel en cours"+useName);,则变量useNamenull!那怎么做呢? 非常感谢你。

1 个答案:

答案 0 :(得分:2)

幸运的是,我们不需要打破问题标题中指出的因果关系。事情是(并且对于电话应用程序处理而言并非如此罕见),在您获得有关来电的指示时,来电者姓名尚未就绪。这是因为需要一些时间才能在联系人中搜索呼叫者号码/ uri。

因此,为了解决这个问题,我建议您执行以下操作之一:

  • 通过AlertDialog指示来电,但仅显示来电号码/ URI。启动处理程序,然后再更新对话框,使其显示名称。
  • 当呼叫到达时,启动处理程序并在稍后执行您的代码。希望在那一刻,名字将可用。

因此,在任何情况下,您需要在指示来电后更新您的AlertDialog一些安全时间。