来自自定义类的startActivity

时间:2015-01-30 09:20:02

标签: java android start-activity

我有一个菜单和5个活动。为了避免重复菜单代码,我创建了一个公共类并在每个活动中调用它:

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

4 个答案:

答案 0 :(得分: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);
     }
 }    

答案 1 :(得分: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,因为您继承自Activity

下次请为您的问题提供完整的错误日志,这样就可以全面了解您的代码可能出现的问题。

答案 2 :(得分:0)

我认为你没有使用正确的上下文来启动意图。

而是尝试

{

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

如果this也无效,请尝试getApplicationContext()

答案 3 :(得分:0)

为什么不使用此代码?

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

我认为,如果不创建新的公共课,它的使用非常简单。请将您的代码与我上面的代码进行比较,只需一行。