繁体   English   中英

不是从MainActivity文件启动新的Activity

[英]Starting new Activity not from the MainActivity file

我需要打开新的活动(如果重要的话,请使用片段),并且我在与主要活动不同的文件中,因此代码如下:

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

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

...不是封闭类ERROR:CurrentActivity.this

有人知道如何解决吗?

谢谢...

您需要将Context类的实例传递给Intent构造函数。 因此,如果需要从Fragment开始新活动,则应编写new Intent(getActivity(), NextActivity.class); 并像getActivity().startActivity(myIntent);一样启动它

如果您在班级中,请使用以下代码:

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

}

如果您在Fragment中,请使用以下命令:

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

据我所知,有一些方法可以解决此问题。 最主要的是您必须获取一个context对象才能启动另一个活动。 让我们尝试以下方法之一:

  1. 如果您使用的是fragment ,则在从fragment开始活动时,尝试调用getActivity() ,如下所示:

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

  3. Context对象传递给您的fragment ,然后使用它代替getActivity()getApplicationContext()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM