Android 无法从片段中的dialogFragment接收数据
日志cat和toast都没有显示片段1中的任何数据。作为初学者,我不想创建对我来说很难的界面。我遵循了第二个解决方案 请编辑我的代码。Android 无法从片段中的dialogFragment接收数据,android,fragment,dialogfragment,Android,Fragment,Dialogfragment,日志cat和toast都没有显示片段1中的任何数据。作为初学者,我不想创建对我来说很难的界面。我遵循了第二个解决方案 请编辑我的代码。 //主要片段代码: public class FragmentOne extends Fragment { public static final int PICKER = 1; @Override public View onCreateView(LayoutInflater inflater,
//主要片段代码:
public class FragmentOne extends Fragment {
public static final int PICKER = 1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_one, container, false);
layout=(ViewGroup)rootView.findViewById(R.id.mainLayout);
layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fm = getActivity().getSupportFragmentManager();
DFragment dialogFragment = new DFragment ();
dialogFragment.setTargetFragment(dialogFragment, PICKER);
dialogFragment.show(fm.beginTransaction(), "Sample Fragment");
}
});
return rootView;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case PICKER:
if (resultCode == Activity.RESULT_OK) {
Bundle bundle = data.getExtras();
String size = bundle.getString("size");
Log.i("PICKER", "Got year=" + size + ", yay!");
} else if (resultCode == Activity.RESULT_CANCELED) {
Toast.makeText(getActivity(), "user did not entered", Toast.LENGTH_SHORT).show();
}
break;}}
// Dialog Fragment Code is here :
public class DFragment extends DialogFragment implements View.OnClickListener{
Button small, medium, large, xlarge;
String size =null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.dialog, container,
false);
small = (Button) rootView.findViewById(R.id.small);
small.setOnClickListener(this);
medium = (Button) rootView.findViewById(R.id.medium);
medium.setOnClickListener(this);
large = (Button) rootView.findViewById(R.id.large);
large.setOnClickListener(this);
xlarge = (Button) rootView.findViewById(R.id.xlarge);
xlarge.setOnClickListener(this);
getDialog().setTitle("DialogFragment Tutorial");
return rootView;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.small:
size = small.getText().toString();
dismiss();
break;
case R.id.medium:
size = medium.getText().toString();
dismiss();
break;
case R.id.large:
size = large.getText().toString();
dismiss();
break;
case R.id.xlarge:
size = xlarge.getText().toString();
dismiss();
break;
default:
break;
}
Intent i = new Intent();
i.putExtra("size", size);
getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, i);
}
}
我建议对您的代码进行几处更改:
这将把您的调用片段设置为目标片段。我在代码中添加了新的实例方法,但将对话框片段替换为“This”会出现类似这样的错误:“找到了错误的第一个参数类型view.view.onclicklsitener Required v4.app.fragment”。谢谢你的回答:)我很抱歉没有具体说明。这里我指的是调用对话框的片段的实例。