2016-05-16 7 views
0

フラグメントからフラグメントにデータを送信する際に問題があります。私はfmondayという名前のDialogFragmentを持っています、それはViewpagerの断片です。DialogFragmentからDialogFragmentにデータを送信するにはどうすればいいですか?

私は他のDialogFragmentと呼ばれ、AlertDFragmentという名前を付けて断片にデータを追加します。私はスピナーからデータを読むことができます、それはうまくいきます。

AlertDFragmentからfmondayに1つの変数を送信する必要があります。ここで

fmondayのコードです:

public class fmonday extends DialogFragment implements LoaderManager.LoaderCallbacks<Cursor> { 

DB db; 
Button button12; 
DialogFragment dlg1; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    dlg1 = new AlertDFragment(); 
} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fmonday, container, false); 

    button12 = (Button) rootView.findViewById(R.id.button12); 
    button12.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 

      dlg1.show(getFragmentManager(), "dlg1"); 

     } 
    }); 
    return rootView; 
} 

そしてAlertDFragmentのコード:

public class AlertDFragment extends DialogFragment { 
Spinner spin; 
DB db; 
String string1; 
Button button13; 
private String namestr; 
public Dialog onCreateDialog(Bundle savedInstanceState) { 


    AlertDialog.Builder adb = new AlertDialog.Builder(getActivity()); 
    LayoutInflater li = LayoutInflater.from(getActivity()); 
    View fdfS = li.inflate(R.layout.fdf, null); 
    adb.setView(fdfS); 
    spin=(Spinner)fdfS.findViewById(R.id.spinner); 
    db = new DB(getActivity()); 
    db.open(); 
    spin.setOnItemSelectedListener(new OnSpinnerItemClicked()); 
    loadSpinnerData(); 
    button13 = (Button) fdfS.findViewById(R.id.button13); 
    button13.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      Toast.makeText(getActivity().getApplicationContext(), "Clicked : " + 
        string1, Toast.LENGTH_LONG).show(); 
      getDialog().dismiss(); 
     } 
    }); 
    return adb.create(); 
} 

私はfmonday DialogFragmentにこのstring1変数を送信する方法を見つけることができない、なぜならシンプルintent活動以外のものでは機能しません。 bundleについてのアドバイスもありますが、その使い方を見つけることができませんでした。

おかげ

UPDATE fmonday

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    dlg1 = new AlertDFragment(); 
    string1 = getArguments().getString("latitude"); 
} 

AlertDFragment

public class AlertDFragment extends DialogFragment { 
    Spinner spin; 
    DB db; 
    String string1; 
    Button button13; 
    private String namestr; 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 


    AlertDialog.Builder adb = new AlertDialog.Builder(getActivity()); 
    LayoutInflater li = LayoutInflater.from(getActivity()); 
    View fdfS = li.inflate(R.layout.fdf, null); 
    adb.setView(fdfS); 
    spin=(Spinner)fdfS.findViewById(R.id.spinner); 
    db = new DB(getActivity()); 
    db.open(); 
    spin.setOnItemSelectedListener(new OnSpinnerItemClicked()); 
    loadSpinnerData(); 
    button13 = (Button) fdfS.findViewById(R.id.button13); 
    button13.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      Toast.makeText(getActivity().getApplicationContext(), "Clicked : " + 
        string1, Toast.LENGTH_LONG).show(); 
      Bundle bundle = new Bundle(); 
      bundle.putString("latitude", string1); 
      fmonday alertdfragment= new fmonday(); 
      alertdfragment.setArguments(bundle); 
      getDialog().dismiss(); 
     } 
    }); 
    return adb.create(); 
} 
+0

'string1'のゲッターを書くことができ、' dlg1.getstring1() 'のようにdlg1を使ってアクセスできます。 –

+0

両方のフラグメント間でデータを共有するためのカスタムイベントリスナーを作成 –

答えて

0

データを設定する:

Bundle bundle = new Bundle(); bundle.putString("latitude", latitude); MapFragment mapFragment = new MapFragment(); mapFragment.setArguments(bundle); 
はデータ

String latitude = getArguments().getString("latitude") 
+0

>エラー:(43、17)エラー:シンボルクラスMapFragmentを見つけることができません。 MapFragmentを初期化する方法は?それとも私の 'AlertDFragment'のようなものですか? – ABL

+0

これは私が与えたサンプルコードですが、AlertDFragmentとfmondayフラグメントを使用する必要があります。 –

+0

なぜ私は何か間違って書いたかもしれませんが、うまくいきません。 – ABL

0

を取得することはできクレート2番目dialogFragment EXにセッター:表示する前に、あなたの最初のダイアログ

DialogFragment dlg1 = new AlertDFragment(); 
dlg1.setSmth(your data here); 

上より

public void setSmth(String value) 
{ 
    this.myData = value; 
} 

、二つ目;

+0

これは、最初のフラグメントからdialogFragmentにデータを送信するためのセッターですか?私は 'AlertDFragment'から' fmonday'まで、これをやりたいと思います。 'onDismiss();'が呼び出されたときと同様に、ダイアログから 'fmonday'にいくつかの変数を送ることになっていました。 – ABL

関連する問題