I tried with passing context
of activity into the adapter and then i tried context.finish();
But its giving me one error like The method finish() is undefined for the type Context
type cast it with activity.
((Activity)context).finish();
Activity
. It can also be ContextThemeWrapper
. See https://mcmap.net/q/302768/-contextthemewrapper-cannot-be-cast-to-activity –
Emphasize Try with the following code:
public YourAdapterName(......,Context context){
...
this.myContext=context;
}
And in your adapter getView()
btn.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
((YourActivityName)myContext).yourDesiredMethod();
}
});
Try passing your Activity as an activity
parameter, then you'll be able to call finish()
on it. Hope this helps.
In adapter it will work
((Activity)view.getContext()).finish();
Code for this is ((Activity)context).finish();
and complete code is
holder.cardUsers.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent1=new Intent(mcontext,AstroChatPanel.class);
intent1.putExtra("mobile",userslist.get(position).getMobile());
intent1.putExtra("name",userslist.get(position).getName());
intent1.putExtra("type","admin");
mcontext.startActivity(intent1);
((Activity)mcontext).finish();
}
});
Activity
. It can also be ContextThemeWrapper
. See https://mcmap.net/q/302768/-contextthemewrapper-cannot-be-cast-to-activity –
Emphasize This Simple code helped me replace Activity with your current activity name
((Activity)context).finish();
i have not used it but i hope it will work. use: "this.recreate()" if you are want to reload it from within the activity.
if you want to reload it from Adapter then use: "((Activity)context).recreate()"
Typecast your activity name with context and finish activity
You shouldn't pass context object in your adapter classes.
You can use Kotlin Higher Order Function (https://kotlinlang.org/docs/lambdas.html#instantiating-a-function-type) in a variable in your adapter, then you can use it where you use the adapter in fragment or activity.
Than you can use your activity context where it called.
Example:
Adapter Class:
var onClick = () -> Unit
Fragment:
adapterInstance.onClick = {this.activity?.finish()}
In your custom adapter try to call finish use below code
((Activity)context).finish();
close Activity form Class Custom Adapter just in method
@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();
}
});
© 2022 - 2024 — McMap. All rights reserved.