2012-07-31 80 views
0

如何將Activity的值傳遞給Fragment當從活動傳遞值到片段時獲得空值?

據我所知,我可以在ActivitygetArgumentFragment中使用setArgument。但我沒有運氣。該值仍然返回爲空。


活動

public class nfc_activity extends Activity { 
    private ImageView mCardView; 
    MyFragmentA f2; 
    public static String itemname; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Button goButton = (Button)findViewById(R.id.go); 
      goButton.setOnClickListener(mGoListener); 


     } 

     private OnClickListener mGoListener = new OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       // Here we start up the main entry point of our redirection 
       // example. 
       String itemname ="1"; 

        MyFragmentA fragment = new MyFragmentA(); 
       Bundle bundle2 = new Bundle(); 
       bundle2.putString("key", itemname); 
       fragment.setArguments(bundle2); 

      } 
     }; 

} 

片段

public class MyFragmentA extends Fragment { 



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

    Bundle bundle = this.getArguments(); 
    if (bundle != null) { 
     String hello = bundle.getString("key", defaultValue); 
     System.out.println(hello); 
    } 
+0

[如何在片段之間傳遞數據](http://stackoverflow.com/questions/5194548/how-to-pass-data-between-fragments) – prolink007 2012-07-31 17:18:13

+0

您提到的API級別是什麼? – Nerd 2012-07-31 17:25:34

回答

0

您的代碼不會顯示你的片段是如何連接到活動中,但你必須確保參數是在之前設置片段,您附加它以使它們可用於o nCreateView。

+0

這樣的東西:片段片段=(片段)getFragmentManager()。findFragmentById(R.id.pager); \t Bundle bundle2 = new Bundle(); \t bundle2.putString(「key」,itemname); \t fragment.setArguments(bundle2);我從這個使用了nullpointerexception。請幫忙 – user1559674 2012-08-01 12:49:28

0

您是否嘗試過使用標籤來標識您的Fragment和findFragmentByTag來檢索它? 在我看來,比使用findFragmentById更清潔,它實際上是查找膨脹的XML佈局的ID或容器佈局的ID!