java.lang.IllegalStateException:指定的子级已有父级。如何处理错误

时间:2016-07-31 19:00:18

标签: java android

我收到以下错误 -

java.lang.IllegalStateException:指定的子级已有父级。您必须首先在孩子的父母身上调用removeView()。

我是Android编程的新手,我不知道什么是inflater。这是我的代码产生此错误消息。

package com.example.android.miwok;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.text.Layout;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

public class NumbersActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_numbers); // gives Null Pointer Exception if this line is removed.

        List<String> numbers = new ArrayList<String>();
        numbers.add("one");
        numbers.add("two");
        numbers.add("three");
        numbers.add("four");
        numbers.add("five");
        numbers.add("six");
        numbers.add("seven");
        numbers.add("eight");
        numbers.add("nine");
        numbers.add("ten");

        LinearLayout rootView = (LinearLayout) findViewById(R.id.rootView);
        TextView numberView = new TextView(this);

        for (int i = 0; i < 10; i++) {
            numberView.setText(numbers.get(i));
            // adds a Text View to the Linear Layout (adding child to the parent)
            rootView.addView(numberView);
        }
    }
}

这是activity_numbers.xml文件

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="com.example.android.miwok.PhraseActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay"/>

    </android.support.design.widget.AppBarLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:id="@+id/rootView">
    </LinearLayout>

</android.support.design.widget.CoordinatorLayout>

我正在尝试在屏幕上显示数字。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您正在重复添加相同的视图,因此错误。这应该解决它:

Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:0123456789"));
startActivity(intent);