2013-11-27 82 views
38

我有第一個類擴展Fragment,第二個類擴展了Activity。Android意圖無法解析構造函數

我的片段工作正常,而我對於片段的意圖代碼:

ImageButton button= (ImageButton) getView().findViewById(R.id.button); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent myIntent = new Intent(MyFragment.this, MyClass.class); 
      MyFragment.this.startActivity(myIntent);   } 
    }); 

我MyClass類代碼:

public class MyClass extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // The activity is being created. 
    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 

     setContentView(R.layout.MyClass); 
    } 
} 

的錯誤是:

Gradle: cannot find symbol constructor Intent(com.xxxx.xxxx.MyFragment,java.lang.Class<com.xxxx.xxxx.MyClass>)

我不知道我出錯的地方。

回答

105

使用

Intent myIntent = new Intent(v.getContext(), MyClass.class); 

Intent myIntent = new Intent(MyFragment.this.getActivity(), MyClass.class); 

開始新的活動。這是因爲當您爲應用程序的特定組件創建一個Intent時,您將需要將Application或組件上下文作爲第一個參數傳遞給Intent構造器。

+5

'意向意圖=新意圖(getApplicationContext(),myClass.class);' – ArtiomLK

+0

非常感謝。但是,如何在主要的android資源中的任何地方無法使用? –

+0

@Kruger Brent你應該問一個負責「主要Android資源」的人。我不相信他們閱讀stackoverflow或至少不是定期的。 –

0

您無法使用Intent's Context來創建意圖。所以,您需要使用您的 Parent ActivityContext

Intent intent = new Intent(getActivity(),MyClass.class); 
3

或者你可以簡單地啓動活動,如下圖所示;

startActivity(new Intent(currentactivity.this, Tostartactivity.class)); 
+0

「或」?談什麼?我在這裏看不到那麼簡單...... –

0

您可以使用此:

Intent intent = new Intent(getApplicationContext(), ClassName.class); 
相關問題