2011-10-31 16 views
36

Tôi đã thử với đi qua context hoạt động vào adapter và sau đó tôi đã cố gắng context.finish(); Nhưng nó đem lại cho tôi một lỗi như The method finish() is undefined for the type ContextCách kết thúc hoạt động từ Bộ điều hợp ..?

+0

Sử dụng dưới đây link.i hy vọng điều này sẽ giải quyết của bạn problrm https://stackoverflow.com/questions/33972621/cannot-use-finish-inside-adapter – user6789978

Trả lời

145

loại truyền phát cùng hoạt động.

((Activity)context).finish(); 
+0

Cảm ơn bạn, điều này hoạt động như một say mê. – Janpan

+0

hoạt động tốt cho tôi –

2

Hãy thử qua hoạt động của bạn như một tham số activity, sau đó bạn sẽ có thể gọi finish() trên đó. Hi vọng điêu nay co ich.

2

Hãy thử với đoạn mã sau:

public YourAdapterName(......,Context context){ 

... 

this.myContext=context; 
} 

Và trong getView adapter của bạn()

btn.setOnClickListener(new Button.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     ((YourActivityName)myContext).yourDesiredMethod(); 

    } 
}); 
+0

thx cho câu trả lời với mô tả @ raul_zevahc –

0

Trong tùy chỉnh bộ chuyển đổi thử của bạn để gọi sử dụng kết thúc mã dưới đây

((Activity)context).finish(); 
0

tôi chưa sử dụng nhưng Tôi hy vọng nó sẽ làm việc. sử dụng: "this.recreate()" nếu bạn muốn tải lại từ bên trong hoạt động.

nếu bạn muốn tải lại nó từ Adaptor sau đó sử dụng: "((Hoạt động) ngữ cảnh) .recreate()"

+0

bây giờ tôi đã kiểm tra nó. làm việc tốt. – neens

0

gần Hoạt động hình thức lớp Tuỳ chỉnh Adaptor chỉ trong phương pháp

@Override 
    public void onClick(View v) { 
    MyApplication.value=mCompany.getCompanyId(); 
    Intent intent = new Intent(MyApplication.context, VaasetActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    intent.putExtra("ID_COMPANY",mCompany.getCompanyId()); 
    MyApplication.context.startActivity(intent); 
    ((Activity)context).finish(); 
    } 
});