2017-08-04 4 views
0

コンテナのメソッドの助けを借りて、 (値が必要とされている)の断片には何も返さないので、私はトーストにしたい文字列が私はバンドルで文字列を送信しようとしていて、コンテナアクティビティのメソッドによって別のフラグメントにアクセスしようとしていますが、文字列を返していません。

トーストされていない

マイコード:

コンテナの活動方法: バンドルバンドル。

public void saveData(int id,final Bundle data) { 
this.bundle=data; 
} 
public Bundle getSavedData() { 

    return this.bundle; 
} 

束のonclick設定されているからフラグメント:データが受信される

 public void onClick(View view) { 
    Main_Page main_page=new Main_Page(); 
    user_email=autoCompletetTextView.getText().toString().trim(); 
    int key=1; 
    switch(view.getId()){ 
    case R.id.proceed: 
      //profile_pic si=new profile_pic(); 
      Bundle args=new Bundle(); 
      args.putString("email",user_email); 
      main_page.saveData(key,args);}} 

断片:

public void onClick(View view) { 
Main_Page main=new Main_Page(); 
Bundle bundle = main.getSavedData(); 
      if (bundle != null) { 
     String myString = bundle.getString("email").toString().trim(); 
     Toast.makeText(getContext(),myString,Toast.LENGTH_LONG).show(); 
      } 
+1

から電子メールを取得おそらく '' bundle'はありません静的なので、新しいインスタンスを使用して取得しようとすると 'ヌル 'を与える​​ –

+0

@ρяσѕρєяKあなたは私の人生を保存した多くのおかげです –

答えて

0

両方Main_Pageオブジェクトがここに異なっています。したがって、別のMain_Pageオブジェクトを作成している間、古いMain_PageオブジェクトのBundleを取得することはできません。

これらはどちらも同じクラスの異なるオブジェクトです。

0

使用内側このコードを断片を送信

Bundle bundle = new Bundle(); 
bundle.putString("key", "value"); 
// set Fragmentclass Arguments 
ReciveClass receiveobj = new Receiveclass(); 
receiveobj .setArguments(bundle); 

を容易に情報を取得する使用このコード

String getValue = getArguments().getString("key");  

この上記のコードを受け取るか、または使用の内部クラスを取得します。

+0

@Srinivas Nahakあなたはこれを試しています –

+0

私は前に試しましたが、フラグメントがアクティビティにアタッチされていないのでNullPointerエラーを出しましたが、バンドルに静的を追加してから問題を解決しました –

0

バンドル宣言に静的追加した後、それは私がコンテナが活動であると思います私の問題

0

を解決しました。フラグメント1はデータを保存し、フラグメント2はデータを取得しています。データを取得する前にアクティビティを再作成すると、バンドルはnullになります。バンドルを静的にして動作させてください。

また、シングルトンクラスを使用してデータを渡すこともできます。断片のいずれかから

public class EmailDataHolder { 

private static EmailDataHolder mInstance; 
private String mEmail = ""; 

public static EmailDataHolder getInstance() { 
    if (mInstance == null) { 
     mInstance = new EmailDataHolder(); 
    } 
    return mInstance; 
} 

public void setEmail(String email) { 
    mEmail = email; 
} 

public void getEmail() { 
    return this.mEamil; 
} 

}

設定データ-----

EmailDataHolder.getnInstance().setEmail(email); 

フラグメント2 ---

EmailDataHolder.getInstance().getEmail(); 
関連する問題