2015-01-30 2 views
0

У меня есть меню и 5 видов деятельности. Чтобы избежать повторений коды меню, я создал общественный класс и назвать его в любой деятельности:startActivity из пользовательского класса

Testclass testclass = new Testclass(Main.this); 

... но, к сожалению, я не могу использовать startActivity() в классе. Это мой код класса:

public class Testclass extends Activity { 

    public Testclass(Activity cc) { 
     Intent intent = new Intent(cc,Next.class); 
      startActivity(intent); 
    } 
} 
+0

Опубликовать свой класс 'Активность'. Возможно, вы определили 'startActivity()' как закрытый или что-то еще. – GoBusto

+0

начните свою деятельность с ее контекста. Для ex 'context.startActivity (намерение);' – Piyush

ответ

0

Я думаю, что вы не используете правильный контекст, чтобы начать Намерение.

Вместо этого попробуйте

{ 

public Testclass() { 
     Intent intent = new Intent(this,Next.class); 
      startActivity(intent); 
    } 
} 

если this не работает, либо, попробуйте getApplicationContext() вместо этого.

+0

это и getApplicationContext() тоже не работает – user3090127

2

Попробуйте это и скажите, помогло ли оно вам.

public class Testclass extends Activity { 

    public Testclass(Activity cc) { 
     final Context context = Testclass.this.getContext(); 
       Intent intent = new Intent(context , Next.class); 
       context.startActivity(intent); 
    } 
}  
+0

Что я должен писать вместо «YourClass»? – user3090127

+0

все, что я написал, получил ERROR – user3090127

+0

YourClass означает класс, который вы на нем. Смотрите мой пост, я его отредактировал. –

1

Вы неправильно поняли концепцию деятельности и ее жизненный цикл. Вы НЕ создаете экземпляр Activity, у Activity есть механизмы обратного вызова (onCreate, onResume и т. Д.), Которые точно говорят вам, что делать. Вам никогда не придется звонить new Activity(). Тот факт, что вы делаете Testclass testclass = new Testclass(Main.this); показывает, что у вас есть непонимание этой концепции: http://developer.android.com/training/basics/activity-lifecycle/index.html

Чтобы исправить вашу ошибку, прочитать документацию и тогда будет ясно, что не так с вашим подходом.

Подсказка: ваш Testclass уже является активным, потому что вы наследуете от Activity.

И в следующий раз, пожалуйста, предоставьте весь журнал ошибок к вашей проблеме, чтобы он мог представить всю картину того, что может быть неправильным с вашим кодом.

0

Почему бы не использовать этот код?

startActivity(new Intent(Main.this, Next.class)); 
// "Main" is your current Activity 
// "Next" is your next Activity to be opened. 

Я думаю, что это очень просто использовать, не создавая новый публичный класс. Пожалуйста, сравните свои коды с моим кодом выше, только с одной строкой.

+0

спасибо. я создал новый класс, потому что я не хочу повторять коды в других 4 действиях – user3090127