2015-05-06 2 views
0

Я пытаюсь запустить ActivityB из ActivityA через класс.Запуск активности из класса неактивности

Так что я создаю мой класс не-активности в ActivityA, таким образом:

public class ActivityA extends Activity { 
    myDialog = new MyDialog(this); 

} 

И я запускаю свою вторую деятельность в конструкторе класса следующим образом:

public MyDialog(Context context) { 
    Intent i = new Intent (context, ActivityB.class); 
    context.startActivity(i); 
} 

Проблема в том, я хотел бы активировать MyDialog из ActivityB. Это возможно?

Спасибо за помощь.

+0

вы можете создать baseactivity.Mydialog, упакованный в BaseActivity.activityB extends BaseActivity – devcelebi

+1

Это невозможно. Потому что ваш диалог используется как контекст ActivityA. – Natali

+0

выглядит как правильное решение, это должен быть ответ не комментарий – apk

ответ

0

Вариант 1: Вы можете сделать свой класс «MyDialog» статическим и вместо этого в конструкторе создать пустоту, которая запускает действиеB. Я не уверен, почему вы хотите, чтобы начать activityB от activityB, но эта работа, если они находятся в одном приложении:

public static class MyDialog { 

    public static void StartDialog(Context context){ 
     System.out.println("STARTING ACTIVITY B"); 
     Intent i = new Intent (context, ActivityB.class); 
     i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(i); 
    } 
} 

И в использовании активности В этот призыв:

ActivityA.MyDialog.StartDialog(getApplicationContext()); 

Option 2: Если вы не хотите создавать MyDialog как статические, а затем:

public class MyDialog { 

    Context context; 

    public MyDialog(Context c){ 
     context = c; 
    } 

    public void StartDialog(){ 
     System.out.println("STARTING ACTIVITY B"); 
     Intent i = new Intent (context, ActivityB.class); 
     i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(i); 
    } 
} 

И затем, в ActivityB:

ActivityA ma = new ActivityA(); 
MyDialog md = ma.new MyDialog(getApplicationContext()); 
md.StartDialog();