Java 在emulator上执行应用程序时出现Android运行时错误
我刚刚开始学习Android开发 运行我的android应用程序时,收到以下错误代码。Java 在emulator上执行应用程序时出现Android运行时错误,java,android,android-layout,android-studio,Java,Android,Android Layout,Android Studio,我刚刚开始学习Android开发 运行我的android应用程序时,收到以下错误代码。 E/AndroidRuntime:致命异常:主 流程:com.example.karan.newapp,PID:3385 java.lang.RuntimeException:无法启动活动组件信息{com.example.karan.newapp/com.example.karan.newapp.mainActivity}:java.lang.IllegalStateException:指定的子级已具有父级
E/AndroidRuntime:致命异常:主
流程:com.example.karan.newapp,PID:3385
java.lang.RuntimeException:无法启动活动组件信息{com.example.karan.newapp/com.example.karan.newapp.mainActivity}:java.lang.IllegalStateException:指定的子级已具有父级。必须首先对子级的父级调用removeView()。
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
在android.app.ActivityThread.access$800(ActivityThread.java:151)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)上
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:135)
位于android.app.ActivityThread.main(ActivityThread.java:5254)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
原因:java.lang.IllegalStateException:指定的子级已具有父级。必须首先对子级的父级调用removeView()。
在android.view.ViewGroup.addViewInner(ViewGroup.java:3936)
在android.view.ViewGroup.addView(ViewGroup.java:3786)中
在android.view.ViewGroup.addView(ViewGroup.java:3758)中
位于com.example.karan.newapp.mainActivity.onCreate(mainActivity.java:26)
位于android.app.Activity.performCreate(Activity.java:5990)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
在android.app.ActivityThread.access$800(ActivityThread.java:151)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)上
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:135)
位于android.app.ActivityThread.main(ActivityThread.java:5254)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)上
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
我认为您的代码对于一个基本的活动来说有些复杂
我将指出一些错误,但在使用android studio之前最好先学习一些基础知识
mainActivity
开头,最好不要使用小写字母,始终在类名开头使用大写字母,例如:mainActivity
setContentView()将布局文件链接到java类代码>,尝试使用布局的id来调用它,这是最佳实践。例如:setContentView(R.layout.activity\u main)代码>
java.lang.RuntimeException:无法启动活动
,因此存在与活动文件相关的问题。我认为您正在声明并使用setContentView()之前的按钮代码>,我们可以在setContentView()之后声明和使用java类中的按钮和其他代码代码>以便正确显示活动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button myButton = new Button(this);
....
....
}
myLayout.setBackgroundColor(Color.BLUE);
myButton.setBackgroundColor(Color.YELLOW);
myButton.setText(R.string.myButton);
RelativeLayout.LayoutParams buttonDetails =
new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
);
最简单和更恰当的方法是:
<Button
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/stringname"
android:textStyle="bold"
android:background="@color/colorAccent"
android:textColor="@color/colorPrimary"
/>
Karan,看来你的问题可能已经出来了
myLayout.addView(myButton,buttonDetails);
在此之前,您已经将按钮添加到布局中
myLayout.addView(myButton);
知道如何以编程方式创建布局是很好的,但我强烈建议您改为使用XML,并且只有在需要在运行时进行更改时才使用代码。另外,当您使用XML时,您可以在设计编辑器中直观地看到它的外观。刚刚从我的代码中删除了一行 添加视图(myButton) 而且效果很好
实际上,这个问题是因为同一个按钮对象被要求在屏幕上显示两次。这里有太多的错误。再次阅读Android应用程序开发的基础知识。另外,
Javascript
标签不属于这个问题。欢迎来到Stack Overflow!请阅读并阅读,特别是如何提问。你在这里的最佳选择是做你的研究,搜索相关的话题,然后尝试一下。在做了更多的研究和搜索之后,把你的尝试写下来,明确地说出你的困境,这可以帮助你得到更好的答案。