2017-01-19 26 views
-4

アクティビティのデータをフラグメントに渡す際に問題がありますが、nullポインタの例外がありますが、データがnullではありません。アクティビティのデータをフラグメントに渡すことができません。

これが私の活動です:

@Override 
public void onResponse(Call call, Response response) throws IOException { 
    dataj = response.body().string(); 
    System.out.println(dataj); 
    Bundle bundle = new Bundle(); 
    bundle.putString("datak", dataj); 
    FragmentUtama fu = new FragmentUtama(); 
    fu.setArguments(bundle); 
    Intent load = new Intent(LoginActivity.this, MainActivity.class); 
    load.putExtra("datajs", dataj); 
    startActivity(load); 
    finish(); 
} 

、これが私の断片である:あなたの助けのための

public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     String datas = getArguments().getString("datak"); 
     System.out.println(datas); 
     return inflater.inflate(R.layout.fragment_utama, container, false); 
} 

感謝。

+0

ここで、 –

+0

Fragment to Activityを追加する場所はどこですか? –

+0

またフラグメント&アクティビティの完全な移行が必要です。 –

答えて

2

インテントによってフラグメントにデータを渡すことはありません。引数は、Fragment transaction commitを呼び出す前にフラグメントインスタンスに設定することによって渡されます。

SomeFragment f = new SomeFragment(); 
// Supply data input as an argument. 
Bundle args = new Bundle(); 
args.putInt("some_key", value); 
f.setArguments(args); 

あなたの断片でそれを読んでください。

注:setArgumentsは、フラグメントがアクティビティにアタッチされる前にのみ呼び出すことができます。したがって、フラグメントがすでにアタッチされている場合は、フラグメントにデータを転送しません。

Bundle args = getArguments(); 
int value = args.getInt("some_key", 0); 
+0

あなたの答えをありがとう、申し訳ありません私は間違ったコードを貼り付けます。 –

+0

@DennyKurniawan、まずあなたはSysout経由で文字列データをチェックしていますか?フラグメントマネージャーにフラグメントを追加する場所と場所を共有してください。 –

+0

はい私は最初にチェックし、ログに表示することができます –

0

あなたはこれを試すことが、

使用は、フラグメントを見つけ、それを介してデータを送信するために役立ちますfindFragmentByTag。

FragmentUtama fu =(FragmentUtama)getSupportFragmentManager().findFragmentByTag(FragmentUtama.class.getSimpleName()) 
Bundle bundle = new Bundle(); 
bundle.putString("datak", dataj); 
fu.setArguments(bundle); 

または

あなたはフラグメント内の1つのセッターメソッドを持っているとActivityから

を断片化する活動からのデータを設定することができます。あなたが意思のエキストラを使用して、それを渡すためにsetArgumentsを使用してMainActivityにデータを渡す必要がありフラグメント

public String getData() 
{ 
return data; 
} 
0

のgetterメソッドを使用して

フラグメントで
fu.setData(dataj); 

String data; 

public void setData(String data) 
{ 
this.data=data; 
} 

使用データそのフラグメントをそのコンテナに置き換える/追加するときに、このアクティビティに属するフラグメントに追加します。

+0

あなたは私にいくつかの参考文献を教えてもらえますか?ありがとう –

関連する問題