2012-07-31 77 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!