如何从 class 扩展 BaseAdaper 显示对话框
How to Display Dialog from a class extending BaseAdaper
我试图在对话框中显示选项卡式寻呼机视图,但我无法在我的适配器 Class 中初始化 getSupportFragmentManager
extends BaseAdapter
。如果我使用 MainActivity extends AppCompatActivity
,则 getSupportFragmentManager
不会显示错误。这是我的代码。请指导我。
public class ContactListAdapter extends BaseAdapter {
------------
------------
slidingListItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TabDialogFragment.createBuilder(ContactListAdapter.this, getSupportFragmentManager())
.setTitle("Title")
.setSubTitle("Subtitle")
.setTabButtonText(new CharSequence[]{"Tab1", "Tab2"})
.setPositiveButtonText("Ok")
.setNegativeButtonText("Cancel")
.setNeutralButtonText("Neutral")
.setRequestCode(REQUEST_TABBED_DIALOG)
.show();
}
});
如何在我的适配器 Class 中初始化 getSupportFragmentManager()
?
您可以在适配器的 class 中创建一个字段并像那样保存 FragmentManager
,方法是将其传递给适配器的构造函数。类似于:
public class ContactListAdapter extends BaseAdapter {
private FragmentManager mFragmentManager;
public ContactListAdapter(FragmentManager fragmentManager)
mFragmentManager = fragmentManager;
}
------------
------------
slidingListItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TabDialogFragment.createBuilder(ContactListAdapter.this, mFragmentManager)
.setTitle("Title")
.setSubTitle("Subtitle")
.setTabButtonText(new CharSequence[]{"Tab1", "Tab2"})
.setPositiveButtonText("Ok")
.setNegativeButtonText("Cancel")
.setNeutralButtonText("Neutral")
.setRequestCode(REQUEST_TABBED_DIALOG)
.show();
}
});
并且在您的 activity 中创建此适配器时,像这样创建它:
ContactListAdapter mAdapter = new ContactListAdapter(getSupportFragmentManager());
最简单的方法是将 FragmentManager 实例传递给适配器,然后使用该实例。
The best approach however will be to give the burden of dialog
creation to the activity itself.
- 使用方法 ex 创建接口。 showTabDialog.
- 在 activity 中实现此接口,并通过 "this" 将接口实例传递给适配器。
- 单击时调用 showTabDialog 方法并通过 activity class 构建对话框。
private View.OnClickListener mOnClickListener;
public ContactListAdapter(View.OnClickListener clickListener)
mOnClickListener = clickListener;
}
------------
------------
slidingListItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mOnClickListener.onClick(view);
});
并在你的 activity/fragment 中实现 mOnClickListener 并在 onClick 中添加你的对话框相关代码。
public void onClick(view view){
TabDialogFragment.createBuilder(this, getSupportFragmentManager())
.setTitle("Title")
.setSubTitle("Subtitle")
.setTabButtonText(new CharSequence[]{"Tab1", "Tab2"})
.setPositiveButtonText("Ok")
.setNegativeButtonText("Cancel")
.setNeutralButtonText("Neutral")
.setRequestCode(REQUEST_TABBED_DIALOG)
.show();
}
我试图在对话框中显示选项卡式寻呼机视图,但我无法在我的适配器 Class 中初始化 getSupportFragmentManager
extends BaseAdapter
。如果我使用 MainActivity extends AppCompatActivity
,则 getSupportFragmentManager
不会显示错误。这是我的代码。请指导我。
public class ContactListAdapter extends BaseAdapter {
------------
------------
slidingListItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TabDialogFragment.createBuilder(ContactListAdapter.this, getSupportFragmentManager())
.setTitle("Title")
.setSubTitle("Subtitle")
.setTabButtonText(new CharSequence[]{"Tab1", "Tab2"})
.setPositiveButtonText("Ok")
.setNegativeButtonText("Cancel")
.setNeutralButtonText("Neutral")
.setRequestCode(REQUEST_TABBED_DIALOG)
.show();
}
});
如何在我的适配器 Class 中初始化 getSupportFragmentManager()
?
您可以在适配器的 class 中创建一个字段并像那样保存 FragmentManager
,方法是将其传递给适配器的构造函数。类似于:
public class ContactListAdapter extends BaseAdapter {
private FragmentManager mFragmentManager;
public ContactListAdapter(FragmentManager fragmentManager)
mFragmentManager = fragmentManager;
}
------------
------------
slidingListItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TabDialogFragment.createBuilder(ContactListAdapter.this, mFragmentManager)
.setTitle("Title")
.setSubTitle("Subtitle")
.setTabButtonText(new CharSequence[]{"Tab1", "Tab2"})
.setPositiveButtonText("Ok")
.setNegativeButtonText("Cancel")
.setNeutralButtonText("Neutral")
.setRequestCode(REQUEST_TABBED_DIALOG)
.show();
}
});
并且在您的 activity 中创建此适配器时,像这样创建它:
ContactListAdapter mAdapter = new ContactListAdapter(getSupportFragmentManager());
最简单的方法是将 FragmentManager 实例传递给适配器,然后使用该实例。
The best approach however will be to give the burden of dialog creation to the activity itself.
- 使用方法 ex 创建接口。 showTabDialog.
- 在 activity 中实现此接口,并通过 "this" 将接口实例传递给适配器。
- 单击时调用 showTabDialog 方法并通过 activity class 构建对话框。
private View.OnClickListener mOnClickListener;
public ContactListAdapter(View.OnClickListener clickListener)
mOnClickListener = clickListener;
}
------------
------------
slidingListItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mOnClickListener.onClick(view);
});
并在你的 activity/fragment 中实现 mOnClickListener 并在 onClick 中添加你的对话框相关代码。
public void onClick(view view){
TabDialogFragment.createBuilder(this, getSupportFragmentManager())
.setTitle("Title")
.setSubTitle("Subtitle")
.setTabButtonText(new CharSequence[]{"Tab1", "Tab2"})
.setPositiveButtonText("Ok")
.setNegativeButtonText("Cancel")
.setNeutralButtonText("Neutral")
.setRequestCode(REQUEST_TABBED_DIALOG)
.show();
}