0

我需要打開新的活動(使用片段,如果它是很重要的),我在不同的文件中,則主要活動,使代碼:開始新的活動不從在MainActivity文件

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

不好足以讓我,因爲我得到:

...是不是一個封閉類錯誤請參閱:CurrentActivity.this

是否有人知道如何解決呢?

謝謝...

+0

你在提問之前是否在SO中搜索過? – Pankaj

+0

請發佈您的活動代碼,請 – omainegra

+0

@Clairvoyant是的,我沒有找到解決我的問題的答案。如果你沒有什麼有用的東西可以添加,你可以忽略這個帖子 – liorlis

回答

1

你需要傳遞給Intent構造Context類的一個實例。所以,如果你需要從Fragment開始新的活動,你應該寫new Intent(getActivity(), NextActivity.class);,並開始像getActivity().startActivity(myIntent);

+0

謝謝,它工作得很好:) – liorlis

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