Android 在相对布局中添加到ListView时出现问题

Android 在相对布局中添加到ListView时出现问题,android,listview,Android,Listview,我是android开发的新手,在向列表视图添加项目时遇到了一些问题。应用程序在单击“添加”按钮时,会显示一个EditText,该文本接受类的名称,然后会将类名添加到列表中。我遇到的问题是,在我输入完类名并尝试点击Add(我的AlertDialog.Builder的positiveButton)后,它会强制关闭。这是我目前掌握的代码: main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:and

我是android开发的新手,在向列表视图添加项目时遇到了一些问题。应用程序在单击“添加”按钮时,会显示一个EditText,该文本接受类的名称,然后会将类名添加到列表中。我遇到的问题是,在我输入完类名并尝试点击Add(我的AlertDialog.Builder的positiveButton)后,它会强制关闭。这是我目前掌握的代码:

main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button 
android:text="Add Class" 
android:layout_width="wrap_content" 
android:id="@+id/addClassBtn" 
android:layout_height="wrap_content" 
/>
<Button 
android:layout_width="wrap_content"
android:id="@+id/removeClassBtn" 
android:text="Remove Class" 
android:layout_height="wrap_content" 
android:layout_alignParentTop="true" 
android:layout_toRightOf="@+id/addClassBtn"
/>
<ListView 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:id="@+id/classList" 
android:layout_below="@+id/addClassBtn" 
android:layout_alignParentLeft="true"
/>
</RelativeLayout>

和我的java文件:

    @Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final Button add = (Button)findViewById(R.id.addClassBtn);
    @SuppressWarnings("unused")
    final Button remove = (Button)findViewById(R.id.removeClassBtn);
    final EditText et = new EditText(getApplicationContext());
    final ListView lv = (ListView)findViewById(R.id.classList);
    final AlertDialog alert;
    final ArrayList<String> classes = new ArrayList<String>();
    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, R.id.classList, classes);
    lv.setAdapter(adapter);

    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setView(et);
    builder.setPositiveButton("Add", new DialogInterface.OnClickListener() 
    {
        @Override
        public void onClick(DialogInterface dialog, int which) 
        {
            classes.add(et.getText().toString());
            adapter.notifyDataSetChanged();
        }
    });
    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() 
    {
        @Override
        public void onClick(DialogInterface dialog, int which) 
        {
            dialog.cancel();
        }
    });

    alert = builder.create();

    add.setOnClickListener(new View.OnClickListener() 
    {
        @Override
        public void onClick(View v) 
        {
            alert.show();
        }
    });
}    
@覆盖
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
最终按钮add=(按钮)findViewById(R.id.addClassBtn);
@抑制警告(“未使用”)
最终按钮移除=(按钮)findViewById(R.id.removeClassBtn);
final EditText et=新的EditText(getApplicationContext());
最终ListView lv=(ListView)findViewById(R.id.classList);
最终警报对话框警报;
最终ArrayList类=新ArrayList();
最终ArrayAdapter=新的ArrayAdapter(getApplicationContext(),android.R.layout.simple\u list\u item\u 1,R.id.classList,classes);
低压设置适配器(适配器);
final AlertDialog.Builder=新建AlertDialog.Builder(此);
builder.setView(et);
setPositiveButton(“添加”,新建DialogInterface.OnClickListener())
{
@凌驾
public void onClick(DialogInterface dialog,int which)
{
add(et.getText().toString());
adapter.notifyDataSetChanged();
}
});
setNegativeButton(“取消”,新建DialogInterface.OnClickListener())
{
@凌驾
public void onClick(DialogInterface dialog,int which)
{
dialog.cancel();
}
});
alert=builder.create();
add.setOnClickListener(新视图.OnClickListener()
{
@凌驾
公共void onClick(视图v)
{
alert.show();
}
});
}    
任何关于我做错了什么或可能的修复的建议都将不胜感激

以下是发生的情况的日志:

09-26 18:12:14.345: DEBUG/AndroidRuntime(879): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
09-26 18:12:14.357: DEBUG/AndroidRuntime(879): CheckJNI is ON
09-26 18:12:14.455: DEBUG/AndroidRuntime(879): --- registering native functions ---
09-26 18:12:14.915: INFO/ActivityManager(58): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example.ClassList/.ClassListMCPActivity }
09-26 18:12:14.935: INFO/ActivityManager(58): Start proc com.example.ClassList for activity com.example.ClassList/.ClassListMCPActivity: pid=885 uid=10036 gids={}
09-26 18:12:14.985: DEBUG/AndroidRuntime(879): Shutting down VM
09-26 18:12:14.985: DEBUG/dalvikvm(879): Debugger has detached; object registry had 1 entries
09-26 18:12:14.995: INFO/AndroidRuntime(879): NOTE: attach of thread 'Binder Thread #3' failed
09-26 18:12:15.745: INFO/ActivityManager(58): Displayed activity com.example.ClassList/.ClassListMCPActivity: 817 ms (total 817 ms)
09-26 18:12:20.915: DEBUG/dalvikvm(258): GC_EXPLICIT freed 71 objects / 3424 bytes in 101ms
09-26 18:12:25.996: WARN/KeyCharacterMap(885): No keyboard for id 0
09-26 18:12:25.996: WARN/KeyCharacterMap(885): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
09-26 18:12:28.905: DEBUG/dalvikvm(226): GC_EXPLICIT freed 100 objects / 4168 bytes in 107ms
09-26 18:12:29.766: DEBUG/AndroidRuntime(885): Shutting down VM
09-26 18:12:29.766: WARN/dalvikvm(885): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
09-26 18:12:29.775: ERROR/AndroidRuntime(885): FATAL EXCEPTION: main
09-26 18:12:29.775: ERROR/AndroidRuntime(885): java.lang.NullPointerException
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:353)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.widget.AbsListView.obtainView(AbsListView.java:1315)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.widget.ListView.measureHeightOfChildren(ListView.java:1198)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.widget.ListView.onMeasure(ListView.java:1109)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.view.View.measure(View.java:8171)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.widget.RelativeLayout.measureChild(RelativeLayout.java:563)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:378)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.view.View.measure(View.java:8171)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.view.View.measure(View.java:8171)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:526)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.view.View.measure(View.java:8171)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.view.View.measure(View.java:8171)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.view.ViewRoot.performTraversals(ViewRoot.java:801)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.os.Looper.loop(Looper.java:123)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at android.app.ActivityThread.main(ActivityThread.java:4627)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at java.lang.reflect.Method.invokeNative(Native Method)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at java.lang.reflect.Method.invoke(Method.java:521)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-26 18:12:29.775: ERROR/AndroidRuntime(885):     at dalvik.system.NativeStart.main(Native Method)
09-26 18:12:29.785: WARN/ActivityManager(58):   Force finishing activity com.example.ClassList/.ClassListMCPActivity
09-26 18:12:30.327: WARN/ActivityManager(58): Activity pause timeout for HistoryRecord{44fd7988 com.example.ClassList/.ClassListMCPActivity}
09-26 18:12:40.979: WARN/ActivityManager(58): Activity destroy timeout for HistoryRecord{44fd7988 com.example.ClassList/.ClassListMCPActivity}
09-26 18:12:45.955: INFO/Process(885): Sending signal. PID: 885 SIG: 9
09-26 18:12:45.965: INFO/ActivityManager(58): Process com.example.ClassList (pid 885) has died.
09-26 18:12:45.965: INFO/WindowManager(58): WIN DEATH: Window{44fcdd78 com.example.ClassList/com.example.ClassList.ClassListMCPActivity paused=false}
09-26 18:12:45.965: INFO/WindowManager(58): WIN DEATH: Window{4501a6a0 com.example.ClassList/com.example.ClassList.ClassListMCPActivity paused=false}
09-26 18:12:45.995: WARN/InputManagerService(58): Got RemoteException sending setActive(false) notification to pid 885 uid 10036
09-26 18:12:48.557: WARN/KeyCharacterMap(115): No keyboard for id 0
09-26 18:12:48.557: WARN/KeyCharacterMap(115): Using default keymap: /system/usr/keychars/qwerty.kcm.bin

09-26 18:12:14.345:DEBUG/AndroidRuntime(879):>>>>>>>>>>>>>>>>>>AndroidRuntime启动问题与适配器有关。看看这个例子

有没有办法获取日志文件以提供给您?因为我试图在这个评论中发布错误,但它不适合。只需将其编辑到原始问题中即可。请确保选中它并按Ctrl+K正确缩进。我之前已经阅读了教程,但我不希望扩展ListActivity,因为我不希望整个屏幕都是ListView,而只是我创建的按钮下的部分。就适配器而言,我目前不需要自定义布局,因此我使用的android.R.layout.simple_list_item_1第三个参数似乎是TextView的id。。请参阅我编辑后的评论。ArrayAdapter是一个重载方法,允许声明包含上下文、布局、id和列表。忽略我最后的评论。我将对此进行测试并回答是否有效。我们有一个赢家:D万分感谢。