2014-01-18 40 views
-1

嗨,我是Android编程新手。Android:错误从活动传递数据到片段

创建与此链接选项卡的布局和滑动式视图的应用程序: source

我有活性文件下1个活动文件TabMainActivity.java和3片段的类。

TabMainActivity.java引用此XML文件:

main_menu.xml 
<android.support.v4.view.ViewPager 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/pager" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
</android.support.v4.view.ViewPager> 

我遇到的错误是,当我尝试从TabMainActivity.java数据传递到MyLockerFragment.java(片段文件)。

TabMainActivity.java-

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_menu); 
    String email = "[email protected]"; 
    Bundle bundle=new Bundle(); 
    bundle.putString("email", email); 
    MyLockerFragment fragobj=new MyLockerFragment(); 
    fragobj.setArguments(bundle); 
    }//end of of onCreate method 

MyLockerFragment.java-

public class MyLockerFragment extends Fragment { 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_mylocker, 
        container, false); 
      Bundle bundle = this.getArguments(); 
      String email=bundle.getString("email"); 
} 

错误是在这一行:String email=bundle.getString("email");

我失去了一些东西根本?

+1

“_Error是在这条线..._” 而且那会是什么错误?请在您的问题中发布logcat输出。 – csmckelvey

+0

嗨,我得到了一个java.lang.NullPointerException错误在线: – user2445971

+0

当您将“电子邮件”添加到您的包,然后将它传递到您的片段,是否已初始化电子邮件?这行'bundle.putString(“email”,email);'你在哪里创建了'email'变量? – csmckelvey

回答

0

在TabMainActivity.java:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_menu); 
    String email = "[email protected]"; 
    Bundle bundle=new Bundle(); 
    bundle.putString("email", email); 
    MyLockerFragment fragobj=new MyLockerFragment(); 
    fragobj.setArguments(bundle); 

    //You needed to add this line to the fragment Activity onCreate() method(othwewise the getArguments() would return null): 

    getSupportFragmentManager().beginTransaction().add(android.R.id.content, fragobj).commit(); 


    }//end of of onCreate method 

在MyLockerFragment.java:

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

     String email = getArguments().getString("email"); 

     View rootView = inflater.inflate(R.layout.fragment_mylocker, 
        container, false);   

     return rootView; 
    } 
+0

嗨我试过上面的代码,但我不断得到一个java.lang.NullPointerException在 捆绑bundle = this.getArguments(); \t \t String email = bundle.getString(“email”); – user2445971