2012-03-30 64 views
0

有人请向我解释我怎么能如此setContentView在相对布局? 我添加了一个活动,但我得到的错误,nullpointers ...如何在RelativeLayout中设置ContentView? (进度条)

我想这:

  public ProgressbarActivity(Context context) { 
    super(context); 

    Activity a = new Activity(); 
    RelativeLayout rl = new RelativeLayout(getContext()); 
    LinearLayout k = new LinearLayout(getContext()); 
    k.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 
    LinearLayout z = new LinearLayout(getContext()); 
    z.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 

    RoundRectShape s = new RoundRectShape(f, null, null); 
    ShapeDrawable shapedrawable = new ShapeDrawable(s); 
    shapedrawable.setShape(s); 
    shapedrawable.getPaint().setColor(0xffffffff); 


    RoundRectShape s1 = new RoundRectShape(f, null, null); 
    ShapeDrawable sd = new ShapeDrawable(s1); 
    sd.setShape(s1); 
    sd.getPaint().setColor(0xff0080ff); 
    rl.setLayoutParams(new LayoutParams(200, 25)); 

    LayoutParams lp = new LayoutParams(200, 20); 
    rl.setPadding(0, 100, 0, 0); 
    rl.setGravity(Gravity.CENTER_HORIZONTAL); 


    ImageView iv = new ImageView(getContext()); 
    iv.setBackgroundDrawable(shapedrawable); 
    iv.setLayoutParams(lp); 


    GradientDrawable g = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, colours); 


    ImageView iv3 = new ImageView(getContext()); 
    iv3.setBackgroundDrawable(g); 
    iv3.setLayoutParams(lp); 

    ClipDrawable cd = new ClipDrawable(sd, Gravity.LEFT, ClipDrawable.HORIZONTAL); 
    ImageView iv2 = new ImageView(getContext()); 
    iv2.setBackgroundDrawable(cd); 
    iv2.setLayoutParams(lp); 
    cd.setLevel(5000); 


    rl.addView(iv); 
    rl.addView(iv2); 
    rl.addView(iv3); 
    a.setContentView(rl); 

    onCreate(); 

} 

我做了什么错? 有人可以解释吗?

我得到一个NullPointerException ...

这是我的logcat:

03-30 06:58:27.369: E/AndroidRuntime(1534): FATAL EXCEPTION: main 
03-30 06:58:27.369: E/AndroidRuntime(1534): java.lang.RuntimeException: Unable to start activity ComponentInfo{eng.pim.app/eng.pim.app.PimActivity}: java.lang.NullPointerException 
03-30 06:58:27.369: E/AndroidRuntime(1534):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 
03-30 06:58:27.369: E/AndroidRuntime(1534):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
03-30 06:58:27.369: E/AndroidRuntime(1534):  at android.app.ActivityThread.access$600(ActivityThread.java:123) 
03-30 06:58:27.369: E/AndroidRuntime(1534):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
03-30 06:58:27.369: E/AndroidRuntime(1534):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-30 06:58:27.369: E/AndroidRuntime(1534):  at android.os.Looper.loop(Looper.java:137) 
03-30 06:58:27.369: E/AndroidRuntime(1534):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
03-30 06:58:27.369: E/AndroidRuntime(1534):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-30 06:58:27.369: E/AndroidRuntime(1534):  at java.lang.reflect.Method.invoke(Method.java:511) 
03-30 06:58:27.369: E/AndroidRuntime(1534):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
03-30 06:58:27.369: E/AndroidRuntime(1534):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
03-30 06:58:27.369: E/AndroidRuntime(1534):  at dalvik.system.NativeStart.main(Native Method) 
03-30 06:58:27.369: E/AndroidRuntime(1534): Caused by: java.lang.NullPointerException 
03-30 06:58:27.369: E/AndroidRuntime(1534):  at android.app.Activity.setContentView(Activity.java:1855) 
03-30 06:58:27.369: E/AndroidRuntime(1534):  at eng.pim.app.ProgressbarActivity.<init>(ProgressbarActivity.java:77) 
03-30 06:58:27.369: E/AndroidRuntime(1534):  at eng.pim.app.PimActivity.onCreate(PimActivity.java:24) 
03-30 06:58:27.369: E/AndroidRuntime(1534):  at android.app.Activity.performCreate(Activity.java:4465) 
03-30 06:58:27.369: E/AndroidRuntime(1534):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
03-30 06:58:27.369: E/AndroidRuntime(1534):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
03-30 06:58:27.369: E/AndroidRuntime(1534):  ... 11 more 
+0

请发布您的logcat。 – Ghost 2012-03-30 06:57:15

+0

好的我会编辑帖子 – user1297720 2012-03-30 06:57:54

回答

1

有很多事情你的代码错误:

1)如果ProgressbarActivityActivity不要使用构造函数进行初始化,你必须必须使用onCreate()方法初始化视图,构建数据,设置螺纹等

2)你从来不这样做:

Activity a = new Activity(); 
如果你想开始你的布局,你建立,那么你必须使用一个 Intent启动新活动新的活动

Intent i = new Intent(CurrentActivityName.this, OtherActivityName.class); 
startActivity(i); 

上面的代码将在活动中工作,否则,而不是CurrentActivityName.this你必须去一些Context的引用(你可以使用应用程序上下文中有法getApplicationContext()),你也必须调用startActivity()Context参考。如果您希望新活动具有您构建的布局,然后将该代码移动到新活动onCreate()方法中,请在那里使用setContentView(),并使用您构建的Relativelayout,然后使用上述代码和Intent开始该活动。 (注意:您必须在清单中声明新的活动)

3)RelativeLayout堆栈视图(其他视图之一),如果这不是您想要的,则使用规则在视图中正确定位视图

也许你应该看到如何做到这一点一些教程:

- 为Activity创建和启动一个:http://developer.android.com/guide/topics/fundamentals/activities.html

- 因为RelativeLayout使用:http://developer.android.com/resources/tutorials/views/hello-relativelayout.html

+0

谢谢你,帮了我很多! :D我也只是14岁:P – user1297720 2012-03-30 07:36:56

+0

@ user1297720请仔细阅读我给出的有关android活动的链接。 – Luksprog 2012-03-30 07:38:30

+0

我会这么做的! :) – user1297720 2012-03-30 08:04:11