Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在emulator上执行应用程序时出现Android运行时错误_Java_Android_Android Layout_Android Studio - Fatal编程技术网

Java 在emulator上执行应用程序时出现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:指定的子级已具有父级

我刚刚开始学习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:指定的子级已具有父级。必须首先对子级的父级调用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之前最好先学习一些基础知识

  • java类名以小写字母
    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);
            ....
            ....
              }
    
  • 为了更改布局、按钮和其他属性(如从字符串中指定按钮名称等)的背景色,最好在相应的XML布局资源文件中进行更改
  • 您使用的:

        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!请阅读并阅读,特别是如何提问。你在这里的最佳选择是做你的研究,搜索相关的话题,然后尝试一下。在做了更多的研究和搜索之后,把你的尝试写下来,明确地说出你的困境,这可以帮助你得到更好的答案。