Java Android向ListView添加字符串

Java Android向ListView添加字符串,java,android,xml,listview,textview,Java,Android,Xml,Listview,Textview,作为我正在制作的SMS应用程序的一部分,我需要在文本视图更改时动态地将文本从文本视图添加到列表视图中的一行。。。每次TextView显示不同内容时添加另一行 话虽如此,我创建了一个小的示例项目来尝试和掌握这方面的诀窍,我已经查阅了许多示例,但仍然不起作用。启动应用程序时,它会暂停一会儿,然后崩溃 我试图将main.xml布局中的文本视图(id:tvContent)中的文本添加到ListView的一行中 以下是我的XML布局: <?xml version="1.0" encoding="ut

作为我正在制作的SMS应用程序的一部分,我需要在文本视图更改时动态地将文本从文本视图添加到列表视图中的一行。。。每次TextView显示不同内容时添加另一行

话虽如此,我创建了一个小的示例项目来尝试和掌握这方面的诀窍,我已经查阅了许多示例,但仍然不起作用。启动应用程序时,它会暂停一会儿,然后崩溃

我试图将main.xml布局中的文本视图(id:tvContent)中的文本添加到ListView的一行中

以下是我的XML布局:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/black" >

<Button
    android:id="@+id/addBtn"
    android:text="Add New Item"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:onClick="addItems" >
</Button>

<TextView
    android:id="@+id/tvContent"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Hey there!" >     
</TextView>

<ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:drawSelectorOnTop="false"
    android:background="@color/black" >     
</ListView>

</LinearLayout>

我的活动课:

package com.example.addtolistview;

import java.util.ArrayList;
import android.os.Bundle;
import android.app.ListActivity;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class ListViewDemo extends ListActivity {

ArrayList<String> listItems=new ArrayList<String>();

ArrayAdapter<String> adapter;

TextView theFact = (TextView) findViewById(R.id.tvContent);
String shareFact = theFact.getText().toString();

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.main);
    adapter=new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1,
            listItems);
    setListAdapter(adapter);

    listItems.add(shareFact);
    adapter.notifyDataSetChanged();
    }
}
package com.example.addtolistview;
导入java.util.ArrayList;
导入android.os.Bundle;
导入android.app.ListActivity;
导入android.widget.ArrayAdapter;
导入android.widget.TextView;
公共类ListViewDemo扩展ListActivity{
ArrayList listItems=新的ArrayList();
阵列适配器;
TextView of fact=(TextView)findViewById(R.id.tvContent);
字符串shareFact=offact.getText().toString();
@凌驾
创建公共空间(捆绑冰柱){
超级冰柱;
setContentView(R.layout.main);
适配器=新阵列适配器(此,
android.R.layout.simple\u list\u item\u 1,
清单项目);
setListAdapter(适配器);
添加(shareFact);
adapter.notifyDataSetChanged();
}
}
这是我的原木猫。。。我不知道如何在问题中实现它

D/AndroidRuntime(11420): Shutting down VM
W/dalvikvm(11420): threadid=1: thread exiting with uncaught exception (group=0x40c5fa68)
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.addtolistview/com.example.addtolistview.ListViewDemo}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1894)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)
at android.app.ActivityThread.access$600(ActivityThread.java:128)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4514)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.app.Activity.findViewById(Activity.java:1794)
at com.example.addtolistview.ListViewDemo.<init>(ListViewDemo.java:15)
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1319)
at android.app.Instrumentation.newActivity(Instrumentation.java:1027)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1885)
... 11 more
D/AndroidRuntime(11420):关闭虚拟机
W/dalvikvm(11420):线程ID=1:线程退出时出现未捕获异常(组=0x40c5fa68)
致命异常:主
java.lang.RuntimeException:无法实例化活动组件信息{com.example.addtolistview/com.example.addtolistview.ListViewDemo}:java.lang.NullPointerException
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1894)上
在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)上
在android.app.ActivityThread.access$600(ActivityThread.java:128)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161)
位于android.os.Handler.dispatchMessage(Handler.java:99)
位于android.os.Looper.loop(Looper.java:137)
位于android.app.ActivityThread.main(ActivityThread.java:4514)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:511)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:980)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
在dalvik.system.NativeStart.main(本机方法)
原因:java.lang.NullPointerException
在android.app.Activity.findviewbyd(Activity.java:1794)上
在com.example.addtolistview.ListViewDemo.(ListViewDemo.java:15)
位于java.lang.Class.newInstanceImpl(本机方法)
位于java.lang.Class.newInstance(Class.java:1319)
位于android.app.Instrumentation.newActivity(Instrumentation.java:1027)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1885)上
... 还有11个

您希望在膨胀布局之前获得文本视图,因此这是一个简单的空点执行操作。 更改您的代码:

public class ListViewDemo extends ListActivity {

    ArrayList<String> listItems=new ArrayList<String>();
    ArrayAdapter<String> adapter;

    TextView theFact;
    String shareFact;


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

        theFact = (TextView) findViewById(R.id.tvContent)
        shareFact = theFact.getText().toString();

        adapter=new ArrayAdapter<String>(this,
        android.R.layout.simple_list_item_1,
        listItems);
        setListAdapter(adapter);

        listItems.add(shareFact);
        adapter.notifyDataSetChanged();
    }
}

将此函数添加到onCreate()方法下面,并将listItems.Add()和adapter.notifyDataSetChanged()行移动到此新方法。

您希望在膨胀布局之前获取TextView,因此这是一个简单的NullPointerExecAction。 更改您的代码:

public class ListViewDemo extends ListActivity {

    ArrayList<String> listItems=new ArrayList<String>();
    ArrayAdapter<String> adapter;

    TextView theFact;
    String shareFact;


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

        theFact = (TextView) findViewById(R.id.tvContent)
        shareFact = theFact.getText().toString();

        adapter=new ArrayAdapter<String>(this,
        android.R.layout.simple_list_item_1,
        listItems);
        setListAdapter(adapter);

        listItems.add(shareFact);
        adapter.notifyDataSetChanged();
    }
}

在onCreate()方法下面添加此函数,并将listItems.Add()和adapter.notifyDataSetChanged()行移动到此新方法。

“它暂停一段时间,然后崩溃。”--什么是logcat输出?导致问题的异常是什么?“它暂停一段时间,然后崩溃。”--什么是logcat输出?导致问题的例外是什么?伟大的人!工作得很有魅力。。。非常感谢你的帮助!伟大的人!工作得很有魅力。。。非常感谢你的帮助!