不是从MainActivity文件启动新活动

时间:2015-06-07 08:11:07

标签: android android-intent android-fragments android-activity

我需要打开新活动(使用片段,如果它很重要),然后我在主要活动上使用其他文件,所以代码:

Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
CurrentActivity.this.startActivity(myIntent);

对我来说不够好,因为我得到了:

...不是封闭的类ERROR引用:CurrentActivity.this

有人知道如何解决它吗?

...谢谢

3 个答案:

答案 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对象来开始另一个活动。让我们尝试下面的一个:

  1. 如果您使用的是fragment,请尝试从片段中启动活动时调用getActivity()

    Intent i = new Intent(getActivity(), NextActivity.class);
    getActivity.startActivity(i);
    
  2. 为您的项目创建Application class extends Application,然后致电getApplicationContext()而不是致电getActivity();

  3. Context个对象传递到fragment,然后使用它而不是getActivity()getApplicationContext()