[英]How to pass data from container activity to its child fragments in android?
這是我的容器活動Table_info
,我想將數據從容器活動傳遞到其子片段Table_no
。 但是我收到的片段中的字符串為null
。
Table_info的代碼:
package com.example.androiddbconnection;
import android.content.Intent;
import android.os.Bundle;
android.support.v4.app.FragmentActivity;
import android.util.Log;
public class Table_info extends FragmentActivity {
String restaurant;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tableinfo_frag);
Intent in=getIntent();
Bundle bundle = getIntent().getExtras();
restaurant = bundle.getString("outletname");
Log.d("in mainactivity",restaurant);
Bundle bundle1 = new Bundle();
bundle1.putString("restaurant",restaurant);
Table_no fragment=new Table_no();
fragment.setArguments(bundle1);
}
}
這是我的片段Table_no :
public class Table_no extends Fragment {
String restaurant12;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle=getArguments();
if (bundle == null) {
Toast.makeText(getActivity(),"argum is null", Toast.LENGTH_LONG).show();
}
else{
Toast.makeText(getActivity(),"argume", Toast.LENGTH_LONG).show();
restaurant12=bundle.toString();
Log.d("arguments", restaurant12);
}
}
但是我得到的響應是'argum is null'
為了從Activity調用Fragment的方法,您需要將您的活動添加到FragmentTransaction
然后可以執行以下操作:
在活動的網站上:
Table_no mTable_no = (Table_no) getFragmentManager().findFragmentByTag("Table_no_tag");
mTable_no.setMyData(String);
在Fragment的網站上:
public void setMyData(String string) {
this.string = string;
}
將構造函數用於片段。 您可以使用其構造函數將值直接傳遞給fragment。
public class Table_no extends Fragment {
String restaurant12="";
public Table_no(String restaurant)
{
restaurant12=restaurant;
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Toast.makeText(getActivity(),restaurant12, Toast.LENGTH_LONG).show();
}
即使我也面臨着同樣的問題,但是添加以下內容解決了我的問題。
Bundle bundle = getIntent().getExtras();
String getFeatureDescription= bundle.getString("desc");
Bundle b = new Bundle();
fragmentManager = getSupportFragmentManager();
b.putString("bb",getFeatureDescription);
FragmentFeatureOverview ff = new FragmentFeatureOverview();
ff.setArguments(b );
fragmentManager.beginTransaction().replace(R.id.fragmentContainer,ff).commit();
但是添加此行后,我的標簽頁停止交換。
fragmentManager.beginTransaction().replace (R.id.fragmentContainer,ff).commit();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.