Android 如何在RelativeLayout中设置ContentView?(进度条)
有人能给我解释一下如何在相对布局中设置ContentView吗? 我添加了一个活动,但出现了错误,空指针 我试过这个:Android 如何在RelativeLayout中设置ContentView?(进度条),android,progress-bar,nullpointerexception,Android,Progress Bar,Nullpointerexception,有人能给我解释一下如何在相对布局中设置ContentView吗? 我添加了一个活动,但出现了错误,空指针 我试过这个: public ProgressbarActivity(Context context) { super(context); Activity a = new Activity(); RelativeLayout rl = new RelativeLayout(getContext()); LinearLayout k = ne
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
这是我的日志:
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
03-30 06:58:27.369:E/AndroidRuntime(1534):致命异常:主
03-30 06:58:27.369:E/AndroidRuntime(1534):java.lang.RuntimeException:无法启动活动组件信息{eng.pim.app/eng.pim.app.PimActivity}:java.lang.NullPointerException
03-30 06:58:27.369:E/AndroidRuntime(1534):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
03-30 06:58:27.369:E/AndroidRuntime(1534):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
03-30 06:58:27.369:E/AndroidRuntime(1534):在android.app.ActivityThread.access$600(ActivityThread.java:123)
03-30 06:58:27.369:E/AndroidRuntime(1534):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
03-30 06:58:27.369:E/AndroidRuntime(1534):在android.os.Handler.dispatchMessage(Handler.java:99)上
03-30 06:58:27.369:E/AndroidRuntime(1534):在android.os.Looper.loop(Looper.java:137)
03-30 06:58:27.369:E/AndroidRuntime(1534):在android.app.ActivityThread.main(ActivityThread.java:4424)上
03-30 06:58:27.369:E/AndroidRuntime(1534):位于java.lang.reflect.Method.Invokenactive(本机方法)
03-30 06:58:27.369:E/AndroidRuntime(1534):位于java.lang.reflect.Method.invoke(Method.java:511)
03-30 06:58:27.369:E/AndroidRuntime(1534):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
03-30 06:58:27.369:E/AndroidRuntime(1534):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
03-30 06:58:27.369:E/AndroidRuntime(1534):在dalvik.system.NativeStart.main(本机方法)
03-30 06:58:27.369:E/AndroidRuntime(1534):由以下原因引起:java.lang.NullPointerException
03-30 06:58:27.369:E/AndroidRuntime(1534):位于android.app.Activity.setContentView(Activity.java:1855)
03-30 06:58:27.369:E/AndroidRuntime(1534):位于eng.pim.app.ProgressbarActivity.(ProgressbarActivity.java:77)
03-30 06:58:27.369:E/AndroidRuntime(1534):在eng.pim.app.PimActivity.onCreate(PimActivity.java:24)
03-30 06:58:27.369:E/AndroidRuntime(1534):在android.app.Activity.performCreate(Activity.java:4465)上
03-30 06:58:27.369:E/AndroidRuntime(1534):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)上
03-30 06:58:27.369:E/AndroidRuntime(1534):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
03-30 06:58:27.369:E/AndroidRuntime(1534):。。。还有11个
您的代码有很多问题:
1) 如果ProgressbarActivity
是一个活动
您不使用构造函数进行初始化,则必须使用onCreate()
方法初始化视图、生成数据、设置线程等
2) 你永远不会这样做:
Activity a = new Activity();
如果要使用构建的布局启动新活动,则必须使用Intent
启动新活动:
Intent i = new Intent(CurrentActivityName.this, OtherActivityName.class);
startActivity(i);
上面的代码将在活动中工作,否则将代替CurrentActivityName。这
您必须获得对某些上下文
的引用(您可以使用方法getApplicationContext()
)的应用程序上下文,并且您还必须在该上下文
引用上调用startActivity()
。如果您希望新活动具有您构建的布局,然后在新活动onCreate()
方法中移动该代码,请使用您构建的Relativelayout
在那里使用setContentView()
,并使用上述代码和意图来启动该活动。(注意:您必须在清单中声明新活动)
3) RelativeLayout
堆叠视图(一个在其他视图之上),如果这不是您想要的,则使用规则在该布局中正确定位视图
也许你应该看一些关于如何做到这一点的教程:
--对于活动
创建和启动活动:
-对于RelativeLayout
使用:您的代码有很多地方出错:
1) 如果ProgressbarActivity
是一个活动
您不使用构造函数进行初始化,则必须使用onCreate()
方法初始化视图、生成数据、设置线程等
2) 你永远不会这样做:
Activity a = new Activity();
如果要使用构建的布局启动新活动,则必须使用Intent
启动新活动:
Intent i = new Intent(CurrentActivityName.this, OtherActivityName.class);
startActivity(i);
上面的代码将在活动中工作,否则将代替CurrentActivityName。这
您必须获得对某些上下文
的引用(您可以使用方法getApplicationContext()
)的应用程序上下文,并且您还必须在该上下文
引用上调用startActivity()
。如果您希望新活动具有您构建的布局,然后在新活动onCreate()
方法中移动该代码,请使用您构建的Relativelayout
在那里使用setContentView()
,并使用上述代码和意图来启动该活动。(注意:您必须在清单中声明新活动)
3) RelativeLayout
堆叠视图(一个在其他视图之上),如果这不是您想要的,则使用规则在该布局中正确定位视图
也许你应该看一些关于如何做到这一点的教程:
--对于活动
创建和启动活动:
-对于RelativeLayout
使用:请发布日志。请发布日志。谢谢,这对我帮助很大!:D我也只有14岁:P@user1297720仔细阅读我给你的链接