ログcatは表示されていませんまたはトーストはフラグメント1のデータを表示していません。私は初心者としては難しいインターフェイスを作成したくありません。私はこの2番目の解決策に続きましたlinkフラグメント内のdialogFragmentからデータを受け取ることができません
私のコードを編集してください。
//メインフラグメントコード:私はあなたのコードに推薦う変化の
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"に置き換えると、 "第1引数の型が間違っています"というようなエラーが返されます。 urのおかげで答える:) –
私の謝罪は具体的ではありません。これにより、私はあなたがダイアログを呼び出すフラグメントのインスタンスを意味しました。 –