Android 从片段启动对话框片段
Android launch dialog fragment from a fragment
我有一个片段 class,其中有操作栏图标。是这样的-
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.action_bar_call, menu);
super.onCreateOptionsMenu(menu,inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.call:
//Call Dialog fragment from here
CallDialogFragment dialog = CallDialogFragment .instantiate(getActivity(), "fragmentTAG");
dialog.show(getFragmentManager(), "dialog");
return false;
}
return false;
}
编辑:
public class CallDialogFragment extends DialogFragment {
public CallDialogFragment () {
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
View view = getActivity().getLayoutInflater().inflate(R.layout.call_dialog_fragment, new LinearLayout(getActivity()), false);
// Build dialog
Dialog builder = new Dialog(getActivity());
builder.requestWindowFeature(Window.FEATURE_NO_TITLE);
builder.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
builder.setContentView(view);
return builder;
}
}
TheDialogFragment class 看起来像这样。我在片段中收到错误提示 Incompatible Types
如何从片段中调用对话片段
使用 dialogFragment.show(getFragmentManager(), "TAG");
,其中 dialogFragment
是 DialogFragment 的一个实例 class,"TAG"
是在片段管理器中标识对话框的字符串标记。
根据您的封闭片段是支持库还是标准片段,getFragmentManager()
将 return 支持或标准片段管理器。
如果您需要获取之前附加的片段实例,请使用 findFragmentByTag()
方法并转换为您的对话片段 class,例如:
((MyDialogFragment)getFragmentManager().findFragmentByTag(TAG))...
按以前用于附加/显示对话框片段的标签搜索。
像下面这样调用你的对话片段
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.call:
//Call Dialog fragment from here
CallDialogFragment dialog = new CallDialogFragment();
dialog.show(getFragmentManager(), "dialog");
return true;
}
return false;
}
我有一个片段 class,其中有操作栏图标。是这样的-
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.action_bar_call, menu);
super.onCreateOptionsMenu(menu,inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.call:
//Call Dialog fragment from here
CallDialogFragment dialog = CallDialogFragment .instantiate(getActivity(), "fragmentTAG");
dialog.show(getFragmentManager(), "dialog");
return false;
}
return false;
}
编辑:
public class CallDialogFragment extends DialogFragment {
public CallDialogFragment () {
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
View view = getActivity().getLayoutInflater().inflate(R.layout.call_dialog_fragment, new LinearLayout(getActivity()), false);
// Build dialog
Dialog builder = new Dialog(getActivity());
builder.requestWindowFeature(Window.FEATURE_NO_TITLE);
builder.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
builder.setContentView(view);
return builder;
}
}
TheDialogFragment class 看起来像这样。我在片段中收到错误提示 Incompatible Types
如何从片段中调用对话片段
使用 dialogFragment.show(getFragmentManager(), "TAG");
,其中 dialogFragment
是 DialogFragment 的一个实例 class,"TAG"
是在片段管理器中标识对话框的字符串标记。
根据您的封闭片段是支持库还是标准片段,getFragmentManager()
将 return 支持或标准片段管理器。
如果您需要获取之前附加的片段实例,请使用 findFragmentByTag()
方法并转换为您的对话片段 class,例如:
((MyDialogFragment)getFragmentManager().findFragmentByTag(TAG))...
按以前用于附加/显示对话框片段的标签搜索。
像下面这样调用你的对话片段
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.call:
//Call Dialog fragment from here
CallDialogFragment dialog = new CallDialogFragment();
dialog.show(getFragmentManager(), "dialog");
return true;
}
return false;
}