2013-10-16 18 views
0

這是我的容器活動Table_info,我想將容器活動的數據傳遞給其子分段Table_no。但我收到的片段中的字符串爲null如何將數據從容器活動傳遞給它在android中的子碎片?

代碼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'

+0

發表您在FragmentTransaction中加載片段的代碼。 – rachit

+0

我沒有加載片段事務的片段。我加載片段onclick另一個片段的按鈕 – user2012537

+0

那麼你怎麼做呢? – rachit

回答

1

爲了調用片段的方法從活動你需要添加您的活動在片段的網站

Table_no mTable_no = (Table_no) getFragmentManager().findFragmentByTag("Table_no_tag"); 
mTable_no.setMyData(String); 

:在活動的現場

:在FragmentTransaction那麼你可以做這樣的

public void setMyData(String string) { 
    this.string = string; 
} 
+0

另一個好方法是爲所有片段也有一個通用接口。 好的解決方案btw。 – user1940676

+0

我沒有從活動中調用任何片段方法。 setArguments是buildin方法 – user2012537

0

的片段使用構造函數。你可以直接使用它的構造函數將值傳遞給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(); 

} 
+0

它給我logcat錯誤引起:java.lang.InstantiationException:com.example.androiddbconnection.Table_no – user2012537

0

即使我面臨同樣的問題,但添加下面的線解決了我的問題。

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(); 
相關問題