2013-11-27 19 views
38

Sınıfım uzayan bir ilk bölüm ve ikinci bir sınıf etkinliğim var.Android Intent Kurucu çözülemiyor

Benim Parçası iyi çalışıyor ve Fragment Niyet benim kodudur:

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

Benim Sınıfım sınıfının kodudur:

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

hatadır:

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

Nerede yanlış gittiğimi bilmiyorum.

cevap

105

Kullanım

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

veya

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

yeni Etkinliği başlatın. Bunun nedeni, uygulamanızın belirli bir bileşeni için bir Niyet oluştururken Uygulama veya bileşen bağlamını Niyet Yapıcıya ilk parametre olarak aktarmanız gerekecek olmasıdır.

+5

'Niyet niyet = new Niyet (getApplicationContext(), myClass.class);' – ArtiomLK

+0

Çok teşekkürler. Ama bu nasıl ana android kaynaklarda herhangi bir yerde mevcut değil? –

+0

@Kruger Brent "Ana android kaynakları" ndan sorumlu olan birine sormalısınız. Stackoverflow okunduğuna veya en azından düzenli olarak okunduğuna inanmıyorum. –

0

Amaç Oluşturma için Intent's Context'u Kullanamazsınız. Yani Sen Parent ActivityContext

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

kullanmak gerekir Ya aşağıda gösterildiği gibi sadece aktiviteyi başlatabilir;

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

"Veya"? Neye başvurmak? Burada hiçbir şey göremiyorum ki bu daha basit ... –

0

Bu kullanabilirsiniz:

Intent intent = new Intent(getApplicationContext(), ClassName.class);