我需要打开新活动(使用片段,如果它很重要),然后我在主要活动上使用其他文件,所以代码:
Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
CurrentActivity.this.startActivity(myIntent);
对我来说不够好,因为我得到了:
...不是封闭的类ERROR引用:CurrentActivity.this
有人知道如何解决它吗?
...谢谢
答案 0 :(得分:1)
您需要向Intent
构造函数传递Context
类的实例。因此,如果您需要从Fragment
开始新活动,则应撰写new Intent(getActivity(), NextActivity.class);
并以getActivity().startActivity(myIntent);
答案 1 :(得分:1)
如果您在班级中使用此代码:
public class AnyClassName{
Context context;
public AnyClassName(Context context){
this.context = context;
}
public void AnyMethod(){
Intent myIntent = new Intent(context, NextActivity.class);
context.startActivity(myIntent);
}
}
如果你在片段中,那么使用它:
public Class AnyFragmnet extends Fragment{
//all default methods which i am not declaring
public void AnyMethodName(){
Intent myIntent = new Intent(getActivity(), NextActivity.class);
getActivity().startActivity(myIntent);
}
}
答案 2 :(得分:0)
据我所知,有一些方法可以解决这个问题。主要的是你必须得到一个context
对象来开始另一个活动。让我们尝试下面的一个:
如果您使用的是fragment
,请尝试从片段中启动活动时调用getActivity()
:
Intent i = new Intent(getActivity(), NextActivity.class);
getActivity.startActivity(i);
为您的项目创建Application class extends Application
,然后致电getApplicationContext()
而不是致电getActivity();
将Context
个对象传递到fragment
,然后使用它而不是getActivity()
或getApplicationContext()