android – 动态地将视图添加到特定的片段布局中

前端之家收集整理的这篇文章主要介绍了android – 动态地将视图添加到特定的片段布局中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图动态地将TextView添加到作为片段的一部分的布局中,但它不起作用.应用程序启动后立即关闭.
我认为它必须做一些事情
TextView Paper = new TextView(this);部分.因为我正在使用Fragments,所以我不知道如何获得正确的上下文.也许我的假设是错误的,但我真的不知道错误可能在哪里.
  1. public class PageFragment extends Fragment {
  2.  
  3. private int fragmentNR;
  4.  
  5. public PageFragment(int nr) {
  6. this.fragmentNR = nr;
  7. }
  8.  
  9. @Override
  10. public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
  11. View v = new View(getActivity());
  12. if (fragmentNR == 0)
  13. v = inflater.inflate(R.layout.page1,container,false);
  14. else if (fragmentNR == 1)
  15. v = inflater.inflate(R.layout.page2,false);
  16. else if (fragmentNR == 2)
  17. v = inflater.inflate(R.layout.page3,false);
  18.  
  19. return v;
  20. }
  21.  
  22. }

06001

logcat的

  1. 07-18 16:32:58.330: E/AndroidRuntime(614): FATAL EXCEPTION: main
  2. 07-18 16:32:58.330: E/AndroidRuntime(614): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.loni.math_prime/com.loni.math_prime.MainActivity}: java.lang.NullPointerException
  3. 07-18 16:32:58.330: E/AndroidRuntime(614): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
  4. 07-18 16:32:58.330: E/AndroidRuntime(614): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
  5. 07-18 16:32:58.330: E/AndroidRuntime(614): at android.app.ActivityThread.access$600(ActivityThread.java:130)
  6. 07-18 16:32:58.330: E/AndroidRuntime(614): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
  7. 07-18 16:32:58.330: E/AndroidRuntime(614): at android.os.Handler.dispatchMessage(Handler.java:99)
  8. 07-18 16:32:58.330: E/AndroidRuntime(614): at android.os.Looper.loop(Looper.java:137)
  9. 07-18 16:32:58.330: E/AndroidRuntime(614): at android.app.ActivityThread.main(ActivityThread.java:4745)
  10. 07-18 16:32:58.330: E/AndroidRuntime(614): at java.lang.reflect.Method.invokeNative(Native Method)
  11. 07-18 16:32:58.330: E/AndroidRuntime(614): at java.lang.reflect.Method.invoke(Method.java:511)
  12. 07-18 16:32:58.330: E/AndroidRuntime(614): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
  13. 07-18 16:32:58.330: E/AndroidRuntime(614): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
  14. 07-18 16:32:58.330: E/AndroidRuntime(614): at dalvik.system.NativeStart.main(Native Method)
  15. 07-18 16:32:58.330: E/AndroidRuntime(614): Caused by: java.lang.NullPointerException
  16. 07-18 16:32:58.330: E/AndroidRuntime(614): at com.loni.math_prime.MainActivity.onCreate(MainActivity.java:30)
  17. 07-18 16:32:58.330: E/AndroidRuntime(614): at android.app.Activity.performCreate(Activity.java:5008)
  18. 07-18 16:32:58.330: E/AndroidRuntime(614): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
  19. 07-18 16:32:58.330: E/AndroidRuntime(614): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
  20. 07-18 16:32:58.330: E/AndroidRuntime(614): ... 11 more

XML

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical"
  6. >
  7.  
  8. <android.support.v4.view.ViewPager
  9. android:id="@+id/viewpager"
  10. android:layout_width="fill_parent"
  11. android:layout_height="fill_parent" >
  12.  
  13. <android.support.v4.view.PagerTitleStrip
  14. android:layout_width="fill_parent"
  15. android:layout_height="wrap_content"
  16. android:textSize="32dp"
  17. android:textStyle="bold"
  18. android:textColor="#fff5ee"
  19. android:layout_gravity="top" />
  20. </android.support.v4.view.ViewPager>
  21.  
  22. </LinearLayout>

解决方法

解决了:
  1. public class PageFragment extends Fragment {
  2.  
  3. private int fragmentNR;
  4.  
  5.  
  6. public PageFragment(int nr) {
  7. this.fragmentNR = nr;
  8. }
  9.  
  10. @Override
  11. public View onCreateView(LayoutInflater inflater,Bundle savedInstanceState) {
  12.  
  13. View v = new View(getActivity());
  14.  
  15. if (fragmentNR == 0)
  16. v = inflater.inflate(R.layout.page1,false);
  17. else if (fragmentNR == 1){
  18. v = inflater.inflate(R.layout.page2,false);
  19. View tv = v.findViewById(R.id.Ausgabe);
  20. ((TextView)tv).setText("TestText");
  21. View pl = v.findViewById(R.id.PageLayout);
  22. TextView Paper = new TextView(pl.getContext());
  23. Paper.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
  24. Paper.setText("Inserted TestText");
  25. ((LinearLayout)pl).addView(Paper);
  26. }
  27. else if (fragmentNR == 2)
  28. v = inflater.inflate(R.layout.page3,false);
  29.  
  30. return v;
  31. }
  32. }

猜你在找的Android相关文章