Android adapterview和addview出现问题
所以我正在尝试构建一个android应用程序,它从用户输入中获取代码,并将其放入listview的自定义布局中 下面是我为列表中每个元素提供的布局的xml(以下称为game_row.xml)Android adapterview和addview出现问题,android,android-arrayadapter,Android,Android Arrayadapter,所以我正在尝试构建一个android应用程序,它从用户输入中获取代码,并将其放入listview的自定义布局中 下面是我为列表中每个元素提供的布局的xml(以下称为game_row.xml) 有谁能帮我弄清楚如何让我的视图彼此配合良好吗?您使用的LayoutInflater不正确。在下面的代码块中 View dialoglayout = inflater.inflate(R.layout.settings_layout, (ViewGroup) getCurrentFocus()); …充气机
有谁能帮我弄清楚如何让我的视图彼此配合良好吗?您使用的
LayoutInflater
不正确。在下面的代码块中
View dialoglayout = inflater.inflate(R.layout.settings_layout, (ViewGroup) getCurrentFocus());
…充气机试图做两件事:
inflate()
的第二个参数传递给,如果您不想在此时附加这两个参数,则使用第三个参数。但是,在本例中,您无法访问实际的父视图(位于正在生成的AlertDialog中),并且它将覆盖任何LayoutParams
,因此您应该修改代码,使其在膨胀时不通过父视图:
View dialoglayout = inflater.inflate(R.layout.settings_layout, null);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(dialoglayout);
旁注:
同样,这只适用于这个特殊情况。在几乎所有其他情况下,您都应该像这样使用充气()
:
充气机。充气(R.layout.settings\u布局,父级,false)代码>
进入充气布局的真实父视图。您试图充气的视图
不受AdapterView
支持。您是否尝试过使用不同类型的视图
?@Pheonixblade9有趣。。。我尝试将视图更改为adapterview,但它在启动时崩溃了,支持哪种类型的视图?谢谢你的帮助!有趣的。。。所以我只是想确定我明白发生了什么。。。因为这是一个警报对话框,它会以对listview有害的方式更改layoutparams。因此,我们不给它父视图,因为我们希望它有自己的单独布局参数?您正在膨胀一个新布局以附加到AlertDialog
。应用程序中的任何ListView
都与讨论无关,因此在这段代码中根本不应该考虑它。我要说的另一点是,在正常情况下,您应该将父视图传递给充气()
,但在对话框中,您没有传递的正确视图。
05-10 14:27:56.153: E/AndroidRuntime(1569): FATAL EXCEPTION: main
05-10 14:27:56.153: E/AndroidRuntime(1569): java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView
05-10 14:27:56.153: E/AndroidRuntime(1569): at android.widget.AdapterView.addView(AdapterView.java:477)
05-10 14:27:56.153: E/AndroidRuntime(1569): at android.view.LayoutInflater.inflate(LayoutInflater.java:497)
05-10 14:27:56.153: E/AndroidRuntime(1569): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
05-10 14:27:56.153: E/AndroidRuntime(1569): at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
05-10 14:27:56.153: E/AndroidRuntime(1569): at edu.ucsb.cs.cs185.hw4skeleton.KeepScoreHomeScreen.buildSettings(KeepScoreHomeScreen.java:145)
05-10 14:27:56.153: E/AndroidRuntime(1569): at edu.ucsb.cs.cs185.hw4skeleton.KeepScoreHomeScreen.onOptionsItemSelected(KeepScoreHomeScreen.java:91)
05-10 14:27:56.153: E/AndroidRuntime(1569): at android.app.Activity.onMenuItemSelected(Activity.java:2534)
05-10 14:27:56.153: E/AndroidRuntime(1569): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:958)
05-10 14:27:56.153: E/AndroidRuntime(1569): at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
05-10 14:27:56.153: E/AndroidRuntime(1569): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
05-10 14:27:56.153: E/AndroidRuntime(1569): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
05-10 14:27:56.153: E/AndroidRuntime(1569): at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:514)
05-10 14:27:56.153: E/AndroidRuntime(1569): at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:99)
05-10 14:27:56.153: E/AndroidRuntime(1569): at android.view.View.performClick(View.java:4084)
05-10 14:27:56.153: E/AndroidRuntime(1569): at android.view.View$PerformClick.run(View.java:16966)
05-10 14:27:56.153: E/AndroidRuntime(1569): at android.os.Handler.handleCallback(Handler.java:615)
05-10 14:27:56.153: E/AndroidRuntime(1569): at android.os.Handler.dispatchMessage(Handler.java:92)
05-10 14:27:56.153: E/AndroidRuntime(1569): at android.os.Looper.loop(Looper.java:137)
05-10 14:27:56.153: E/AndroidRuntime(1569): at android.app.ActivityThread.main(ActivityThread.java:4745)
05-10 14:27:56.153: E/AndroidRuntime(1569): at java.lang.reflect.Method.invokeNative(Native Method)
05-10 14:27:56.153: E/AndroidRuntime(1569): at java.lang.reflect.Method.invoke(Method.java:511)
05-10 14:27:56.153: E/AndroidRuntime(1569): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
05-10 14:27:56.153: E/AndroidRuntime(1569): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
View dialoglayout = inflater.inflate(R.layout.settings_layout, (ViewGroup) getCurrentFocus());
View dialoglayout = inflater.inflate(R.layout.settings_layout, null);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(dialoglayout);