2012-06-09 44 views
5

我可以將值存儲在一個變量中,現在我想將該變量傳遞給fragment。如何在Android中使用intent將活動之間的數據傳遞給fragment

用下面的代碼我可以加載片段。

public class AndroidListFragmentActivity extends Activity { 
Fragment2 f2; 
public static String itemname; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.apetiserfragement); 
    itemname=getIntent().getStringExtra("itemname"); 
    Bundle args=new Bundle(); 
    args.putString("itemname", itemname); 
    f2=new Fragment2(); 
    f2.setArguments(args); 

} 
} 

ITEMNAME

的輸出被分成2個到窗口中的一個用於延長listfragment(對於列表視圖)(在這裏,我使用XML頁面加載片段)。一個片段

Fragment2.xml

public class Fragment2 extends Fragment { 
String itemname; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 

    System.out.println(getArguments().getString("itemname")); 

    return inflater.inflate(R.layout.fragment2, container, false); 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 

} 

    } 

AndroidListFragmentActivity在這個類ITEMNAME我想通過Fragment2.class。

+0

你的問題到底是什麼?請描述當你運行你的代碼時會發生什麼?你有錯誤嗎?如果是這樣,發佈logcat?如果不是,你的行爲有什麼不同? –

+0

另外,請發佈您的XML佈局。 –

回答

5

使用在fragment constructors之一提供的捆綁,然後你應該能夠這樣做,你要在onCreateView()

例權檢索Bundle

YourFragment.instantiate(context,"fragName",yourBundleWithValue); 

然後,在你的片段:

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

    getArguments().getStringValue("name"); //Returns your string value 

    return inflater.inflate(R.layout.fragment2, container, false); 
} 
+1

請你給我示例代碼 – naveen

+0

完成。您需要使用此方法實例化您的Fragment,或者通過提供您自己的靜態構造函數(儘管後者是禁忌)。 – hwrdprkns

+0

我在此類中存儲itemname值AndroidListFragmentActivity。請參閱mycode根據我的代碼更改代碼,因爲我更新的fragments.please幫助我YourFragment.instantiate(上下文,「fragName」,yourBundleWithValue); 根據我的代碼改變行。 – naveen

-1

你需要使用FragmentManager來顯示你r Fragment

+1

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – infused

+0

@infused這是一個XY問題。 OP已經使用'setArguments()'和'getArguments()',所以他沒有看到片段顯示的原因是因爲他沒有使用'FragmentManager'來顯示它。 –

+0

@infused我只注意到這個問題已經兩歲了...... –

相關問題