[英]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();
}
});
}
}
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.