Sat*_*ale 2 android android-context android-fragments android-dialog android-recyclerview
我正在我的.IRecyclerview中使用我的 RecyclerView 类。我需要在我编写的一种方法中显示。但我收到一个错误FragmentAdapterAlertDialogAdapterClass
android.app.Activity 无法应用于 android.content.Context。
这是我的代码AlertClass
public class AlertClass {
public void noInternetAlert(Activity activity)
{
final AlertDialog alertDialog=new AlertDialog.Builder(activity).create();
AlertDialog.Builder builder=new AlertDialog.Builder(activity);
builder.setTitle("No Internet Connection");
builder.setMessage("You need to have Mobile data or Wifi to access this.");
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
alertDialog.cancel();
}
});
builder.show();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的方法的代码AdapterClass
private void free() {
AlertClass alert=new AlertClass();
alert.noInternetAlert(context);
}
Run Code Online (Sandbox Code Playgroud)
这是适配器类的代码
public class BusyAdapter extends RecyclerView.Adapter<BusyAdapter.ViewHolder>
{
private FragmentManager fm;
private FragmentTransaction tx;
private String myToken,name,join,description,id;
private ArrayList<BusyEntry> entry;
Context context;
public BusyAdapter(ArrayList<BusyEntry> entry,Context context)
{
this.entry = entry;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.busy_card,parent,false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
final BusyEntry currentEntry=entry.get(position);
holder.name.setText(currentEntry.getName());
holder.description.setText(currentEntry.getDescription());
holder.id.setText(currentEntry.getId());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final int pos=holder.getAdapterPosition();
name=entry.get(position).getName();
join=entry.get(position).getJoin();
description=entry.get(position).getDescription();
id=entry.get(position).getId();
final AppCompatActivity activity=(AppCompatActivity)v.getContext();
final AlertDialog alertDialog=new AlertDialog.Builder(activity).create();
final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle("Confirmation");
builder.setMessage("Do you really want to Free?");
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
free();
String chooseTab="";
ChooseTab chooseTab1=new ChooseTab();
fm=activity.getSupportFragmentManager();
Busy busy=new Busy();
tx=fm.beginTransaction();
tx.replace(R.id.frame,chooseTab1,chooseTab);
tx.detach(myentry);
tx.attach(myebtry);
entry.remove(pos);
notifyItemRemoved(pos);
tx.commit();
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
alertDialog.cancel();
}
});
builder.show();
}
});
}
Run Code Online (Sandbox Code Playgroud)
如何在该方法中显示对话框?
只需像这样 使用v.getContext更改AlertDialog.Builder alertDialog = new AlertDialog.Builder(v.getContext);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(v.getContext);
// Setting Dialog Title
alertDialog.setTitle("Confirm Delete...");
// Setting Dialog Message
alertDialog.setMessage("Are you sure you want delete this?");
// Setting Icon to Dialog
alertDialog.setIcon(R.drawable.delete);
// Setting Positive "Yes" Button
alertDialog.setPositiveButton("YES", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
free();
String chooseTab="";
ChooseTab chooseTab1=new ChooseTab();
fm=activity.getSupportFragmentManager();
Busy busy=new Busy();
tx=fm.beginTransaction();
tx.replace(R.id.frame,chooseTab1,chooseTab);
tx.detach(myentry);
tx.attach(myebtry);
entry.remove(pos);
notifyItemRemoved(pos);
tx.commit();
}
});
// Setting Negative "NO" Button
alertDialog.setNegativeButton("NO", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Write your code here to invoke NO event
dialog.cancel();
}
});
// Showing Alert Message
alertDialog.show();
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2506 次 |
| 最近记录: |