将片段提交到 DialogFragment
Commit fragment into DialogFragment
您好,我在将片段提交到 DialogFragment 时遇到问题
我有简单的 dialogFragment...
public class CustomCalendarDialog extends DialogFragment {
public CustomCalendarDialog() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NO_TITLE, android.R.style.Theme_Holo);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_custom_calendar, container);
FrameLayout frame = view.findViewById(R.id.Dialogcontainer1);
int id = frame.getId();
FragmentManager fragmentManager = ((FragmentActivity) getActivity()).getSupportFragmentManager();
Fragment customCalendarFragment = CustomCalendarFragment.newInstance();
fragmentManager.beginTransaction().replace(id, customCalendarFragment );
return view;
}
}
并且有可以用这行activity提交的片段
Fragment customCalendarFragment = CustomCalendarFragment.newInstance();
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(frameLayout.getId(), customCalendarFragment ).commit();
在 activity 程序中使用此行效果很好。
现在我需要将这个片段替换成 Dialog/Dialog 片段。
我有布局fragment_custom_calendar.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0000ff">
<FrameLayout
android:id="@+id/Dialogcontainer1"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
</FrameLayout>
将布局膨胀到对话框中
View view = inflater.inflate(R.layout.fragment_custom_calendar, container);
variable container is null 不知道行不行。
查看没问题,在屏幕上可以看到蓝色布局 (#0000ff) 但我想查看我的片段(自定义日历)
程序未在提交行崩溃
FrameLayout frame = view.findViewById(R.id.Dialogcontainer1);
int id = frame.getId();
FragmentManager fragmentManager = ((FragmentActivity) getActivity()).getSupportFragmentManager();
Fragment customCalendarFragment = CustomCalendarFragment.newInstance();
fragmentManager.beginTransaction().replace(id, customCalendarFragment );
frame 不为空 id 不为空 customCalendarFragment 不为空但我看不到它。
我创建片段:
public static Fragment newInstance() {
return (Fragment) new CustomCalendarFragment();
}
我在 MainActivity 中的调用对话框
CustomCalendarDialog cdd = new CustomCalendarDialog();
cdd.show(getFragmentManager(), "TAG");
我需要对话框中的这个片段:(我不知道在普通对话框中是否可以提交片段如果是的话请link我和我会看看。
感谢任何想法
我用 activity 解决了类似的问题,就像这里一样。
/* Start Activity */ public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setClassName("com.thinoo.ActivityTest", "com.thinoo.ActivityTest.NewActivity");
startActivityForResult(intent,90); } /* Called when the second activity's finished */ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode) {
case 90:
if (resultCode == RESULT_OK) {
Bundle res = data.getExtras();
String result = res.getString("param_result");
Log.d("FIRST", "result:"+result);
}
break;
} }
private void finishWithResult() {
Bundle conData = new Bundle();
conData.putString("param_result", "Thanks Thanks");
Intent intent = new Intent();
intent.putExtras(conData);
setResult(RESULT_OK, intent);
finish(); }
您好,我在将片段提交到 DialogFragment 时遇到问题 我有简单的 dialogFragment...
public class CustomCalendarDialog extends DialogFragment {
public CustomCalendarDialog() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NO_TITLE, android.R.style.Theme_Holo);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_custom_calendar, container);
FrameLayout frame = view.findViewById(R.id.Dialogcontainer1);
int id = frame.getId();
FragmentManager fragmentManager = ((FragmentActivity) getActivity()).getSupportFragmentManager();
Fragment customCalendarFragment = CustomCalendarFragment.newInstance();
fragmentManager.beginTransaction().replace(id, customCalendarFragment );
return view;
}
}
并且有可以用这行activity提交的片段
Fragment customCalendarFragment = CustomCalendarFragment.newInstance();
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(frameLayout.getId(), customCalendarFragment ).commit();
在 activity 程序中使用此行效果很好。
现在我需要将这个片段替换成 Dialog/Dialog 片段。
我有布局fragment_custom_calendar.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0000ff">
<FrameLayout
android:id="@+id/Dialogcontainer1"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
</FrameLayout>
将布局膨胀到对话框中
View view = inflater.inflate(R.layout.fragment_custom_calendar, container);
variable container is null 不知道行不行。
查看没问题,在屏幕上可以看到蓝色布局 (#0000ff) 但我想查看我的片段(自定义日历)
程序未在提交行崩溃
FrameLayout frame = view.findViewById(R.id.Dialogcontainer1);
int id = frame.getId();
FragmentManager fragmentManager = ((FragmentActivity) getActivity()).getSupportFragmentManager();
Fragment customCalendarFragment = CustomCalendarFragment.newInstance();
fragmentManager.beginTransaction().replace(id, customCalendarFragment );
frame 不为空 id 不为空 customCalendarFragment 不为空但我看不到它。
我创建片段:
public static Fragment newInstance() {
return (Fragment) new CustomCalendarFragment();
}
我在 MainActivity 中的调用对话框
CustomCalendarDialog cdd = new CustomCalendarDialog();
cdd.show(getFragmentManager(), "TAG");
我需要对话框中的这个片段:(我不知道在普通对话框中是否可以提交片段如果是的话请link我和我会看看。
感谢任何想法
我用 activity 解决了类似的问题,就像这里一样。
/* Start Activity */ public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setClassName("com.thinoo.ActivityTest", "com.thinoo.ActivityTest.NewActivity");
startActivityForResult(intent,90); } /* Called when the second activity's finished */ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode) {
case 90:
if (resultCode == RESULT_OK) {
Bundle res = data.getExtras();
String result = res.getString("param_result");
Log.d("FIRST", "result:"+result);
}
break;
} }
private void finishWithResult() {
Bundle conData = new Bundle();
conData.putString("param_result", "Thanks Thanks");
Intent intent = new Intent();
intent.putExtras(conData);
setResult(RESULT_OK, intent);
finish(); }