我有一个菜单和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);
}
}
答案 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.
我认为,如果不创建新的公共课,它的使用非常简单。请将您的代码与我上面的代码进行比较,只需一行。