2017-03-16 19 views
-4

現在、私はフラグメントに取り組んでいますので、アクティビティに触れることなくフラグメントからフラグメントにデータを渡すことが可能かどうかを知りたいと思います。androidのアクティビティに触れることなくフラグメントからフラグメントへデータを渡すことは可能ですか

+1

何も触れていないのですか?それを明確に説明してください –

+0

ようこそ[スタックオーバーフロー](http://stackoverflow.com/)! [質問する方法](http://stackoverflow.com/help/how-to-ask)を読んで、[最小限の完全で検証可能な例]を提供してください(http://stackoverflow.com/help/mcve) ! –

+0

[フラグメント間でデータを保持する方法](http://stackoverflow.com/questions/21329670/how-to-retain-data-between-fragments)の可能な複製 – Yatin

答えて

0

使用バンドルは、文字列を送信します

//Put the value 
YourNewFragment ldf = new YourNewFragment(); 
Bundle args = new Bundle(); 
args.putString("YourKey", "YourValue"); 
ldf.setArguments(args); 
//Inflate the fragment 
getFragmentManager().beginTransaction().add(R.id.container, ldf).commit(); 

をonCreateViewで新しいフラグメントの:

//Retrieve the value 
String value = getArguments().getString("YourKey"); 
0

は、あなたがそれを行うことができますいくつかの方法があります。 )

private int data; 
private static String PARAM_MY = "param"; 

public static MyFragment newInstance(int data) { 
    MyFragment fragment = new MyFragment(); 
    Bundle args = new Bundle(); 
    args.putInt(PARAM_MY , data); 
    fragment.setArguments(args); 
    return fragment; 
} 

、あなたは(それを盗んのonCreateすることができます:そのうちの一つは、このような引数でデータを送信することである

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    if (getArguments() != null) { 
     data = getArguments().getInt(PARAM_MY); 
    } 
} 

他の方法は、Interfacesを使用することです。

0

私はそうは思わない。すべてのフラグメントはアクティビティにアタッチされており、同じアクティビティに接続されている場合を除いて、2つのフラグメントの間に直接接続はありません。フラグメント間で通信したい場合は、フラグメント内のインターフェイスを定義し、接続されたアクティビティでインターフェイスを実装する必要があります。添付されたアクティビティでは、2つのフラグメントインスタンスがあるため、フラグメント間で(アクティビティを使用して)データを渡すことができます。これは厳密にベストプラクティスが推奨する、詳細についてはドキュメントを見てみましょう:

https://developer.android.com/training/basics/fragments/communicating.html

0

活動はあなたが活動中のデータを保つことができると同じである場合。

活動

public class MyActivity extends Activity { 

    private MyObject myObject = new MyObject(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_my); 
     ... 
    } 

    public MyObject getMyObject() { 
     return myObject; 
    } 
} 

断片

public class MyFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     MyActivity activity = (MyActivity) getActivity(); 
     MyObject myObjectFromActivity = activity.getMyObject(); 
     return view; 
    } 
} 
0

主な質問は、あなたが達成しようとしているデータの種類をお渡ししようとしているものでしょうか?

私が仕事用に書いたアプリケーションの1つは、メインアクティビティを使用してすべてのコントローラを保持し、どのビューやフレームセグメント、または関連コントローラからでも簡単にアクセスできるようにしたものです。良い例は、すべての共有アプリデータを保持するデータコントローラです。

文字列と整数、またはより複雑なオブジェクトを渡そうとしていますか?

関連する問題