单击按钮时出现崩溃错误;指定的 child 已经有一个 parent。您必须先在 child 的 parent 上调用 removeView()

I Have Crash Error when I Clicked Button; The specified child already has a parent. You must call removeView() on the child's parent first

我有这个错误:

The specified child already has a parent. You must call removeView() on the child's parent first.

当我点击 buildNot.setPosiviteButton 时。 请帮助我,谢谢大家! 这是我的 Java 源代码:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btnDersEkle = (Button) findViewById(R.id.btnDersEkle);

        list = (ListView) findViewById(R.id.listView1);
        adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1);
        etDers = new EditText(MainActivity.this);
        etNot = new EditText(MainActivity.this);
        //Dialog
        AlertDialog.Builder build = new AlertDialog.Builder(MainActivity.this);
        build.setTitle("Ders Ekle");
        build.setView(etDers);
        //Dialog Not
        final AlertDialog.Builder buildNot = new AlertDialog.Builder(MainActivity.this);
        buildNot.setTitle("Not Ekle");
        buildNot.setView(etNot);

        build.setPositiveButton("Tamam", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                adapter.add(etDers.getText().toString());
                dialog.cancel();
            }
        });
        final AlertDialog alertDers = build.create();

        buildNot.setPositiveButton("Tamam", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                 adapter = (ArrayAdapter ) list.getAdapter();
                  String item = (String) list.getSelectedItem();
                  int position = list.getSelectedItemPosition();
                  item += "YourText";
                  adapter.insert(item, position);
                  dialog.cancel();
            }
        });
        final AlertDialog alertNot = buildNot.create();
        list.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                alertNot.show();
            }
        });
        list.setAdapter(adapter);

        btnDersEkle.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                alertDers.show();

            }
        });


    }

尝试像下面这样更改您的代码,也许会有帮助

public class MainActivity extends ListActivity {

int posmy;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_mainlistnew);


        Button btnDersEkle = (Button) findViewById(R.id.btnDersEkle);

        final ListView list = getListView();
        final ArrayAdapter adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1);


        final EditText etDers = new EditText(MainActivity.this);
        final EditText etNot = new EditText(MainActivity.this);
        //Dialog
        AlertDialog.Builder build = new AlertDialog.Builder(MainActivity.this);
        build.setTitle("Ders Ekle");
        build.setView(etDers);

        //Dialog Not
        final AlertDialog.Builder buildNot = new AlertDialog.Builder(MainActivity.this);
        buildNot.setTitle("Not Ekle");
        buildNot.setView(etNot);

        build.setPositiveButton("Tamam", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                adapter.add(etDers.getText().toString());
                dialog.cancel();
            }
        });
        final AlertDialog alertDers = build.create();

        buildNot.setPositiveButton("Tamam", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                  //adapter = (ArrayAdapter ) list.getAdapter();
                  //String item = (String) list.getSelectedItem();
                  //int position = list.getSelectedItemPosition();
                  int position=posmy;
                  String item = "YourText" + etNot.getText().toString();
                  adapter.insert(item, position);
                  dialog.cancel();
            }
        });
        final AlertDialog alertNot = buildNot.create();


        list.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                posmy=position;
                alertNot.show();
            }
        });

        list.setAdapter(adapter);

        btnDersEkle.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                alertDers.show();

            }
        });

}



}

那是因为什么都没有选择。

list.getSelectedItemPosition() 总是 return -1.

"Click" 和 "select" 是不同的东西。 "Select" 在 ListView 中是通过指针设备(方向键、轨迹球、箭头键等)完成的。

list.getSelectedItemPosition() 如果您不使用方向键、轨迹球或箭头键,则始终 return -1。

您应该将 position 作为 class 成员存储在 onItemClick(AdapterView<?> parent, View view, int position, long id) 中,并在 buildNot.setPositiveButton onClick.

中访问它

下面的编码,其中 mPosition 是您 class 的 class 成员。

buildNot.setPositiveButton("Tamam", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        adapter = (ArrayAdapter ) list.getAdapter();
        String item = (String) adapter.getItem(mPosition);
        item += "YourText";
        adapter.insert(item, mPosition);
        dialog.cancel();
    }
});

list.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
        mPosition = position;
        alertNot.show();
    }
});