2015-04-13 2 views
0

У меня есть 2 активности (FirstActivity и SecondAcitivity) Содержимое FirstActivity EditText и Button Я хочу уничтожить firstActivity, когда пользователь нажимает на кнопку и запускает Secondactivity после времени, введенного в EditTextКак показать активность по истечении определенного периода времени

+0

Даже у вас много ответа, но мне любопытно узнать, что вы пытаетесь решить вашу проблему. Можете ли вы разместить здесь какой-нибудь код? – DJhon

ответ

0

Im предполагаю, что Вы также получили mainactivity или homeactivity? если так что вы могли бы сделать следующее, чтобы получить нужный результат:() метод

в вашем 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); 
     } 
    }); 

чем в OnCreate() метод место вашего mainactivity в следующем:

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); 
    } 

EDIT: (если вы не имеете 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); 
    } 
} 

В OnCreate метода вашего FirstActivity в:

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; 

добавить следующий код к методу OnCreate в вашем FirstActivity

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 
} 

Не думаю, что это лучшее решение, но я испытал это, и она работала;)

+0

Комментарии не предназначены для расширенного обсуждения; этот разговор был [перемещен в чат] (http://chat.stackoverflow.com/rooms/75226/discussion-on-answer-by-strider-how-to-display-an-activity-after-certain-time- ре). – Taryn

0

Используйте 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 
    } 
} 
+0

Мне нужно применить это, когда пользователь нажимает кнопку button1? Как я могу установить этот код в Onclick? –

+0

взгляните на мое редактирование – IntegralOfTan

+0

@IntergralOfTan спасибо, но я хочу немедленно уничтожить firstActivity и вернуться домой .. после введенного времени Начать второе действие –

0

в 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); 
    } 
}); 
+0

спасибо, но мне нужно применить это, когда пользователь нажимает кнопку button1? –

+0

@HassanEchafaii См. Обновление. –

+0

Я получаю ошибку в Handle() «Обработчик» является абстрактным, не может быть создан. –

Смежные вопросы