如何使用重复方法?

时间:2012-05-19 08:41:28

标签: java android phone-call

我有一个拨打电话的方法。数字和延迟来自两个编辑文本框中的字符串。它工作正常。但是,我想把它放在一个循环中,以便它在结束前多次执行相同的操作。

我的代码是 -

public void makeCall(View view) {

             //create handler for phone call

         Handler delayedCallHandler = new Handler() {
              public void handleMessage(Message msg) {
                String num = (String) msg.obj;

                Intent intent = new Intent(Intent.ACTION_CALL);
                intent.setData(Uri.parse(num));
                startActivity(intent);
              }
            };


            //Grabs milli seconds count from edit text box

               EditText edit_seconds = (EditText)
                    findViewById(R.id.seconds);
               CharSequence edit_seconds_value =
                    edit_seconds.getText();

               int secondz = Integer.parseInt(edit_seconds_value.toString());                    

            // Grabs TXT Char from MSISDN edit text box and converts to edit_text_value
            EditText edit_text = (EditText)
                    findViewById(R.id.msisdn);
               CharSequence edit_text_value =
                    edit_text.getText();

            //Delay phone call

            delayedCallHandler.sendMessageDelayed(
                    delayedCallHandler.obtainMessage(0, "tel:" + edit_text_value), // msg.obj = the number to call
                    secondz); // 50 seconds

            // Toast Popup when call set button pressed

            Toast toast=Toast.makeText(this, "You have now set the call for " + edit_seconds_value + "milliseconds" , Toast.LENGTH_LONG); 
            toast.show();  

    }        

3 个答案:

答案 0 :(得分:0)

非常简单,您可以使用Thread班级,TimerTask班级或AlarmManager班级。 Thread和TimerTask类中将需要休眠时间。

答案 1 :(得分:0)

您可以使用startactivityForResult()启动CALL活动。然后在OnActivtyResult发送延迟消息以启动下一个CALL。

@Override
void onActivityResult(...) {
   ....
   if (count <= NUMBER_OF_CALLS) {
       delayedCallHandler.sendMessageDelayed(
                    delayedCallHandler.obtainMessage(0, "tel:" + edit_text_value), // msg.obj = the number to call
                    secondz); // 50 seconds
       count++;
   }
   ....
}

答案 2 :(得分:0)

简单。我认为。 好。让我们说你希望它重复10次。 并且您的方法称为“method()”

//BEFORE YOUR ONCREATE
int count = 1;
//PUT THIS WHEREVER YOU WANT TO CALL YOUR METHOD
while(count<=10){
    method();
    count++;
}

然后在此之后设置你的方法()(在OnCreate之外)

private void method() {
    //DO ALL YOUR STUFF HERE

}

简而言之,这将创建名为method()的方法。

然后它将创建一个名为count的int,其值为1.

然后它将执行您的方法并将“1”添加到“count”

所以“count”现在的值为2。

当计数仍然低于10时,它将再次执行该方法..

再次......再次计数= 10

然后它会停止。

将方法()重命名为您喜欢的任何内容,并添加您想要做的事情。