2013-11-27 16 views
38

私はファーストクラスのFragmentを拡張し、2番目のクラスは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); 

新しい活動を開始します。これは、アプリケーションの特定のコンポーネントのインテントを作成するときに、インテントコンストラクタの最初のパラメータとしてアプリケーションまたはコンポーネントのコンテキストを渡す必要があるためです。

+5

'テントの意図=新しいテント(getApplicationContext()、myClass.classを);' – ArtiomLK

+0

どうもありがとうございました。しかし、どのようにこれは主なアンドロイドのリソースのどこでも利用できないのでしょうか? –

+0

@Krugerブレントあなたは "主なアンドロイドリソース"を担当する誰かに尋ねる必要があります。私は彼らが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); 
関連する問題