2011-10-31 26 views
36

我試圖與傳遞活動context插入適配器,然後我試圖context.finish();但它給我一個錯誤,如The method finish() is undefined for the type Context如何從適配器完成的活動..?

+0

使用下面link.i希望這將解決您的problrm https://stackoverflow.com/questions/33972621/cannot-use-finish-inside-adapter – user6789978

回答

145

類型與活動投放。

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

謝謝你,這個工程就像一個魅力。 – Janpan

+0

很適合我 –

2

嘗試通過自己的活動爲activity參數,那麼你就能夠調用finish()就可以了。希望這可以幫助。

2

嘗試用下面的代碼:

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

... 

this.myContext=context; 
} 

而在你的適配器getView()

btn.setOnClickListener(new Button.OnClickListener() { 

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

    } 
}); 
+0

THX與描述@ raul_zevahc –

0

在您的自定義適配器嘗試調用下面的代碼完成使用

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

我還沒有使用它,但我希望它會起作用。 使用: 「this.recreate()」如果你想從活動中重新加載它。

如果你想從適配器重新加載它,然後

使用: 「((活動)範圍內).recreate()」

+0

答案現在我已經檢查了。它的工作正常。 – neens

0

接近活動形式類自定義適配器只是在方法

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