简体   繁体   English

单击按钮时出现崩溃错误; 指定的孩子已经有一个父母。 您必须先在孩子的父母上调用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

I have this error: 我有这个错误:

The specified child already has a parent. 指定的孩子已经有一个父母。 You must call removeView() on the child's parent first. 您必须先在孩子的父母上调用removeView()。

When I clicked buildNot.setPosiviteButton . 当我单击buildNot.setPosiviteButton Help me please, thanks guys! 请帮助我,谢谢大家! This is my Java source code: 这是我的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();

            }
        });


    }

Try change your code like below, maybe help 尝试如下更改您的代码,也许有帮助

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();

            }
        });

}



}

That is because nothing is selected. 那是因为什么也没选择。

list.getSelectedItemPosition() will always return -1. list.getSelectedItemPosition()将始终返回-1。

"Click" and "select" are separate things. “单击”和“选择”是分开的内容。 "Select" in a ListView is done via the pointing device (D-pad, trackball, arrow keys, etc.). 通过定位设备(D-pad,轨迹球,箭头键等)可以在ListView中进行“选择”。

list.getSelectedItemPosition() will always return -1 if you are not using D-pad, trackball or arrow keys. 如果您不使用D-pad,轨迹球或箭头键, list.getSelectedItemPosition()将始终返回-1。

You should store the position in onItemClick(AdapterView<?> parent, View view, int position, long id) as a class member and access it in buildNot.setPositiveButton onClick . 您应该将该position作为类成员存储在onItemClick(AdapterView<?> parent, View view, int position, long id) ,并在buildNot.setPositiveButton onClick对其进行访问。

Coding below, where mPosition is a class member of your class. 在下面的代码中,其中mPosition是您的班级的班级成员。

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();
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 &#39;指定的孩子已经有一个父母。 您必须先在孩子的父母上调用 removeView()。 并且不确定我错在哪里 - 'The specified child already has a parent. You must call removeView() on the child's parent first.' and not sure where I'm wrong 指定的孩子已经有一个父母。 您必须先在孩子的父母上调用removeView()” - The specified child already has a parent. You must call removeView() on the child's parent first” 指定的孩子已经有一个父母。 您必须先在孩子的父母上调用 removeView() - The specified child already has a parent. You must call removeView() on the child's parent first Android - 指定的子级已有父级。您必须首先在孩子的父母上调用removeView() - Android - The specified child already has a parent. You must call removeView() on the child's parent first IllegalIllegalStateException:指定的子代已经有一个父代。 您必须先在孩子的父母上调用removeView() - IllegalIllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first dialog - 指定的孩子已经有一个父母。 您必须先在孩子的父母上调用 removeView() - dialog - The specified child already has a parent. You must call removeView() on the child's parent first 指定的子项已有父项。 您必须先在孩子的父母上调用 removeView() (Android) - The specified child already has a parent. You must call removeView() on the child's parent first (Android) Android Dialog 错误指定的子项已经有一个父项。 您必须先在孩子的父母上调用 removeView() - Android Dialog error The specified child already has a parent. You must call removeView() on the child's parent first 我的代码收到错误消息“指定的孩子已经有一个父母。 您必须先在孩子的父母上调用removeView()。” - My code receives the error “The specified child already has a parent. You must call removeView() on the child's parent first.” 膨胀 DialogFragment 时出错:指定的子级已经有父级。 您必须先在孩子的父母上调用 removeView() - Error while inflating a DialogFragment : The specified child already has a parent. You must call removeView() on the child's parent first
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM