因此,要ShowcaseView
在 a 上正确显示DialogFragment
,我们必须将 a 显示DialogFragment
为 aFragment
而不是将 a 显示DialogFragment
为 a Dialog
。
在 中DialogFragment
,我们可以有这样的东西:
public static class MyDialogFragment extends DialogFragment {
public static MyDialogFragment newInstance() {
return new MyDialogFragment();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.hello_world, container, false);
View tv = v.findViewById(R.id.text);
((TextView)tv).setText("This is an instance of MyDialogFragment");
return v;
}
我们可以在这样的 Activity 中显示它:
public class MyDialogActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contact_manager);
if (savedInstanceState == null) {
MyDialogFragment fragment = MyDialogFragment.newInstance();
getSupportFragmentManager()
.beginTransaction()
.add(R.id.frameLayout, fragment, "Some_tag")
.commit();
}
}
activity_contact_manager.xml 布局可以是:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="match_parent" />
AndroidManifest.xml 条目可能是:
<activity
android:name=".activity.MyDialogActivity"
android:theme="@android:style/Theme.Dialog" />