[英]How to display an activity after certain time period
我有2個活動(FirstActivity和SecondAcitivity)FirstActivity內容EditText和Button我想在用戶單擊按鈕時銷毀firstActivity,並在EditText中輸入時間后啟動SecondActivity
使用CountDownTimer:
String text = editText.getText().toString();
int time = Integer.parseInt(text);//in seconds
time = time * 1000;
new CountDownTimer(time, 1000) {
public void onTick(long millisUntilFinished) {
}
public void onFinish() {
Intent i = new Intent(this, SecondActivity.class);
startActivity(i);
}
}.start();
將其放在onClick中,因此實現View.OnClickListener並添加以下代碼:
public void onClick(View view) {
if (view.getId() == R.id.button1) {
//countdown code
}
}
在onCreate中
Button myBtn = (Button)findViewById(R.id.YourBtnId);
final EditText myEditText = (EditText)findViewById(R.id.YourEditTextId);
myBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int time = Integer.parseInt(myEditText.getText().toString());
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent startActivity = new Intent(FirstActivity.this, SecondAcitivity.class);
startActivity(startActivity);
finish();
}
}, time * 1000);
}
});
我猜您還參加了一項主要活動或家庭活動? 如果是這樣,您可以執行以下操作以獲得所需的結果:
在您的firstactivity onCreate()方法中:
Button mButton = (Button)findViewById(R.id.TestButton);
final EditText mEditText = (EditText)findViewById(R.id.TestTextBox);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int time = Integer.parseInt(mEditText.getText().toString());
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("Time", time);
startActivity(intent);
}
});
比在您的mainactivity的onCreate()方法中放置以下內容:
if (getIntent().getIntExtra("Time", 0) > 0) {
int time = getIntent().getIntExtra("Time" , 0);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
finish();
}
}, time * 1000);
}
編輯:(如果您沒有MainActivity)
第一:在XML中注冊接收者
<receiver android:name=".AlarmReceiver"/>
創建AlarmReceiver類
package (your package)
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Alarm time reached", Toast.LENGTH_SHORT).show();
Intent i = new Intent();
i.setClassName("(your package name)", "(your package name.SecondActivity)");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
在您的FirstActivity的onCreate方法中:
Button mButton = (Button)findViewById(R.id.TestButton);
final EditText mEditText = (EditText)findViewById(R.id.TestTextBox);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int time = Integer.parseInt(mEditText.getText().toString());
if(time > 0) {
Intent myIntent = new Intent(getBaseContext(), AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), 0, myIntent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, time);
alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(), pendingIntent);
Toast.makeText(getApplicationContext(), "Starting Activity in: " + time + " seconds", Toast.LENGTH_SHORT).show();
finish();
}
}
});
希望這可以幫助你 ;)
PS:關於在活動之間傳遞圖像,您可以嘗試以下操作:首先在活動頂部聲明位圖:
private Intent myIntent;
將以下代碼添加到FirstActivity中的onCreate方法中
myIntent = new Intent(FirstActivity.this, AlarmReceiver.class);
並在下面添加bitmap = BitmapFactory.decodeFile(f.getAbsolutePath(), bitmapOptions);
下列:
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
myIntent.putExtra("SendImage", byteArray);
並在下面添加Bitmap thumbnail = (BitmapFactory.decodeFile(picturePath));
ByteArrayOutputStream stream = new ByteArrayOutputStream();
thumbnail.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
myIntent.putExtra("SendImage", byteArray);
然后在您的AlarmReceiver中
byte[] mByteArray = intent.getByteArrayExtra("SendImage") //above Intent i = new Intent();
i.putExtra("Image", mByteArray); //above context.startActivity(i);
並在您的SecondActivity中
byte[] mByteArray= getIntent().getByteArrayExtra("Image");
if(mByteArray != null){
Bitmap mBitmap = BitmapFactory.decodeByteArray(mByteArray, 0, mByteArray.length);
mTestImage.setImageBitmap(mBitmap); //Your imageview
}
不要以為這是最好的解決方案,但是我已經對此進行了測試,並且效果很好;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.