2016-12-12 11 views
0

ActivityからFragmentにデータを渡したいと思います。私はそれをどうやって行うのか分かりません。私は多くの解決策を見てきましたが、そのうちのどれも実際には機能しませんでした。Androidからデータをフラグメントに送る方法

私はちょうどStringFragmentに渡したいと思います。

私はそれをこの方法を試してみました:

public class PhotoActivty extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_photo); 
     if (null == savedInstanceState) { 
      Bundle bundle = new Bundle(); 
      String myMessage = "Stackoverflow is cool!"; 
      bundle.putString("message", myMessage); 
      BasicFragment fragInfo = new BasicFragment(); 
      fragInfo.setArguments(bundle); 
      android.app.FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
      transaction.replace(R.id.photo_frame, fragInfo); 
      transaction.commit(); 
     } 
    } 
} 

がエラーとは何ですか?私はこの方法でそれを呼び出す:Fragment

+2

あなたのコードは大丈夫です。 'if(null == savedInstanceState){' –

+0

ここでエラーが発生しましたbtw? –

+0

ああ、ポートレートモードでは大丈夫ですが、風景では動きませんが、これは別のエラーが原因だと思います。とにかく助けてくれてありがとう! – mafioso

答えて

0

これが問題の本当の原因であるかどうかわからないでonCreateView

String myValue = this.getArguments().getString("message"); 

が、あなたはAppCompatActivitygetSupportFragmentManager()の代わりgetFragmentManager()を使用する必要があります。また、FragmentFragmentTransactionなどのクラスは、support.v4パッケージから来るはずです。

0
Bundle bundle = new Bundle(); 
String myMessage = "Stackoverflow is cool!"; 
bundle.putString("message", myMessage); 
Fragment fragInfo = new BasicFragment(); 
fragInfo.setArguments(bundle); 
FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
transaction.replace(R.id.photo_frame, fragInfo); 
transaction.commit(); 

0

は、あなたの活動のif (null == savedInstanceState)を削除する場合は、あなたの内側にこれを試してみてください。 savedInstanceStatenull == nullの場合、BasicFragmentは、FrameLayoutR.id.photo_frameに置き換えません。あなたがあなたの活動にフラグメントを作成する場合

public class MyFragment extends Fragment { 
    public static MyFragment newInstance(int index) { 
     MyFragment f = new MyFragment(); 
     Bundle args = new Bundle(); 
     args.putInt("index", index); 
     f.setArguments(args); 
     return f; 
    } 
} 

1

アクティビティ:

断片から
Bundle bundleObject = new Bundle(); 
bundleObject.putString("data", " Send From Activity"); 
/*set Fragmentclass Arguments*/ 
Fragment fragmentobject = new Fragment(); 
fragmentobject .setArguments(bundleObject); 

あなたがこの方法を受け取る:

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 
String stringText = getArguments().getString("data");  
return inflater.inflate(R.layout.fragment, container, false); 
関連する問題