在这里我的问题是自定义对话框和活动之间的真正区别是什么,我将其主题设置为对话框并作为对话框打开,我已经使用了这两个,我理解的一些小的区别如下
- 编码保留在活动中的其他文件和自定义对话框中的同一文件中(如果我们还没有为对话框创建新的类文件),
- 活动保持在活动堆栈中,而对话框则不。
还有其他区别吗?所以我们需要自定义对话来代替活动作为对话,反之亦然,
我当前的问题是,当我单击 listitem 并打开新活动(如此处的对话框)时,当我按下返回按钮并再次单击项目时,它“意外停止”,并且无法理解错误,我的错误如下
04-18 12:21:18.945:E/AndroidRuntime(915):致命异常:主要 04-18 12:21:18.945: E/AndroidRuntime(915): java.lang.IllegalStateException: 适配器的内容已更改,但 ListView 未收到通知。确保适配器的内容不是从后台线程修改的,而只是从 UI 线程修改的。[在 ListView(2131230777, class android.widget.ListView) 和 Adapter(class com.logicbridge.lazyloader.MyOrdersLazyAdapter)] 04-18 12:21:18.945: E/AndroidRuntime(915): 在 android.widget.ListView.layoutChildren(ListView.java:1538) 04-18 12:21:18.945: E/AndroidRuntime(915): 在 android.widget.AbsListView$CheckForTap.run(AbsListView.java:2728) 04-18 12:21:18.945: E/AndroidRuntime(915): 在 android.os.Handler.handleCallback(Handler.java:605) 04-18 12:21:18.945: E/AndroidRuntime(915): 在 android.os.Handler.dispatchMessage(Handler.java:92) 04-18 12:21:18.945: E/AndroidRuntime(915): 在 android.os.Looper.loop(Looper.java:137) 04-18 12:21:18.945: E/AndroidRuntime(915): 在 android.app.ActivityThread.main(ActivityThread.java:4424) 04-18 12:21:18.945: E/AndroidRuntime(915): 在 java.lang.reflect.Method.invokeNative(Native Method) 04-18 12:21:18.945: E/AndroidRuntime(915): 在 java.lang.reflect.Method.invoke(Method.java:511) 04-18 12:21:18.945: E/AndroidRuntime(915): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 04-18 12:21:18.945: E/AndroidRuntime(915): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 04-18 12:21:18.945: E/AndroidRuntime(915): at dalvik.system.NativeStart.main(Native Method)
我的代码用于列表视图
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.my_order_list);
initControls();
loadList();
}
private void initControls() {
progress = new ProgressDialog(this);
progress.setMessage("Loading...");
list = (ListView) findViewById(R.id.my_order_List);
}
private void loadList() {
StaticItems.myorderadapter = new MyOrdersLazyAdapter(MyOrders.this,
StaticItems.myOrderListArr);
list.setAdapter(StaticItems.myorderadapter);
list.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
// Starts new activity after some process
ArrayList<String> str = new ArrayList<String>();
str.add("loadOrdersDetail");
str.add("2");
new MyTask(str).execute();
return false;
}
});
}
发生这种情况是因为我使用了新活动而不是对话框吗?