2013-11-27 13 views
38

Tôi có Phân đoạn mở rộng lớp học đầu tiên và Lớp học thứ hai mở rộng Hoạt động.Mục đích Android Không thể giải quyết hàm tạo

My Fragment đang làm việc tốt, và mã của tôi cho mục đích? Trong Fragment là:

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

mã lớp MyClass của tôi là:

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

Lỗi này là:

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

Tôi không biết mình đã đi sai ở đâu.

Trả lời

105

Sử dụng

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

hoặc

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

để bắt đầu một Hoạt động mới. Điều này là do bạn sẽ cần phải vượt qua bối cảnh ứng dụng hoặc thành phần như là một tham số đầu tiên cho Trình xây dựng đích khi bạn tạo một Intent cho một thành phần cụ thể của ứng dụng của bạn.

+5

'Ý định ý định = Ý định mới (getApplicationContext(), myClass.class); ' – ArtiomLK

+0

Thanks a lot. Nhưng làm thế nào đến đây là không có sẵn bất cứ nơi nào trong các nguồn tài nguyên android chính? –

+0

@Kruger Brent Bạn nên hỏi ai đó chịu trách nhiệm về "tài nguyên android chính". Tôi không tin rằng họ đọc stackoverflow hoặc ít nhất là không thường xuyên. –

0

Bạn không thể sử dụng Intent's Context để tạo mục đích. Vì vậy, bạn cần phải sử dụng của bạn Parent ActivityContext

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

Hoặc bạn chỉ có thể bắt đầu hoạt động như hình dưới đây;

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

"Hoặc"? Đề cập đến cái gì? Tôi không thấy gì ở đây đơn giản hơn ... –

0

Bạn có thể sử dụng này:

Intent intent = new Intent(getApplicationContext(), ClassName.class); 
Các vấn đề liên quan