簡體   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