1
我当前的活动类“TimerAct.java”使用30secs的计时器。计时器完成后,必须启动一个新的活动“SMS.java”。为此,在onFinish()中,我调用当前活动的一个方法来启动新的活动。但我得到一个味精“强制关闭”。谁能帮我吗?如何从CountDownTimer调用活动?
下面的代码:
//TimerAct.java
public class TimerAct extends Activity
{
static TextView timeDisplay;
Timer t;
int length = 30000;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.time);
timeDisplay = (TextView) findViewById(R.id.timer);
timeDisplay.setText("Time left: " + length/1000);
t = new Timer(length, 1000);
t.start();
}
public void mess()
{
Intent i = new Intent(this, SMS.class);
startActivity(i);
}
}
//Timer.java
public class Timer extends CountDownTimer
{
public Timer(long millisInFuture, long countDownInterval)
{
super(millisInFuture, countDownInterval);
}
public void onTick(long millisUntilFinished)
{
TimerAct.timeDisplay.setText("Time left: " + millisUntilFinished/1000);
}
public void onFinish()
{
TimerAct.timeDisplay.setText("Time over!!!");
TimerAct ta = new TimerAct();
ta.mess();
}
}
//SMS.java
public class SMS extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.setType("vnd.android-dir/mms-sms");
startActivity(sendIntent);
String phoneNo = "9791192196";
String message = "Hello";
sendSMS(phoneNo, message);
}
//---sends an SMS message to another device---
private void sendSMS(String phoneNumber, String message)
{
PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this, SMS.class), 0);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, pi, null);
}
}
Timer类不能使用意向的,所以只有我打电话一处理意图部分的当前活动的方法。 – Nikunj 2012-02-05 12:10:32
我已经更新了不同的代码实现的答案,或者使用你的Timer类,你将不得不使用处理程序,并发送消息给处理程序(在相同的活动类中)以启动新的活动意图。 – 2012-02-05 15:06:38
仍然遇到同样的问题。在计时器30秒完成后,我收到一条消息“强行关闭”,并且新的活动未启动。 – Nikunj 2012-02-05 16:36:16