Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓应用程序在点击按钮时崩溃(这可能是因为我添加了ListView)_Java_Android_Xml_Android Layout_Listview - Fatal编程技术网

Java 安卓应用程序在点击按钮时崩溃(这可能是因为我添加了ListView)

Java 安卓应用程序在点击按钮时崩溃(这可能是因为我添加了ListView),java,android,xml,android-layout,listview,Java,Android,Xml,Android Layout,Listview,我的应用程序显示,当我单击应用程序中的“唯一”按钮时,会弹出一条消息,说OMG Android已经停止。这可能是由于我使用的ListView组件存储了我在EditText组件中输入的内容。我是初学者。请帮忙!(我使用kitkat手机使用文件C:\Users\admin\AndroidStudioProjects\OMGAndroid\app\build\outputs\apk尝试此应用程序) activity_main.xml: <LinearLayout xmlns:android="h

我的应用程序显示,当我单击应用程序中的“唯一”按钮时,会弹出一条消息,说OMG Android已经停止。这可能是由于我使用的ListView组件存储了我在EditText组件中输入的内容。我是初学者。请帮忙!(我使用kitkat手机使用文件C:\Users\admin\AndroidStudioProjects\OMGAndroid\app\build\outputs\apk尝试此应用程序)

activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">


<TextView
    android:id="@+id/main_textview"
    android:text="@string/hello_world"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
<ListView
    android:id="@+id/main_listview"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:layout_marginTop="20dp"/>
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <!-- Set OnClickListener to trigger results when pressed -->
    <Button
        android:id="@+id/main_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_marginLeft="20dp"
        android:text="@string/button" />
    <!-- Shows an image from your drawable resources -->
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_marginLeft="20dp"
        android:src="@drawable/ic_launcher" />
    <!-- Closing tag for the horizontal nested layout -->
</LinearLayout>

<!-- Displays keyboard when touched -->
<EditText
    android:id="@+id/main_edittext"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:layout_marginLeft="20dp"
    android:hint="@string/hint" />
}

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.admin.omgandroid" >
<uses-sdk
    android:targetSdkVersion="21"
    android:minSdkVersion="16" />
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

</manifest>

strings.xml:

<resources>
<string name="app_name">OMG Android</string>
<string name="action_settings">Settings</string>
<string name="hello_world">As if</string>
<string name="button">Update The TextView</string>
<string name="hint">A Name</string>
</resources>

天哪,安卓
设置
犹如
更新文本视图
名字

这是代码的一部分

@Override
public void onClick(View v) {
    mainTextView.setText("Button Pressed");
    mainTextView.setText(mainEditText.getText().toString() + " is learning android development");
    // Also add that value to the list shown in the ListView
    mNameList.add(mainEditText.getText().toString());

    //This is where you are going wrong
    mArrayAdapter.notifyDataSetChanged();
}
您在哪里初始化了阵列适配器,阵列适配器对象在哪里

listview是如何获取数据的

这是你应该做的

  • 初始化阵列适配器
  • 获取列表视图项的引用
  • 将适配器设置为listview
无需在此处执行notifydatasetChange

再创建一个布局,以便适配器创建视图。 在您的情况下,因为它只是一个文本,所以创建一个布局,将TextView作为它的子级

假设此布局名称为listView\u text\u布局

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/list_item_text_view"
    android:minHeight="?android:attr/listPreferredItemHeight"
    android:gravity="center_vertical">
</TextView>

现在,添加此代码

 mArrayAdapter = new ArrayAdapter<String>(getActivity(),R.layout.listView_text_layout,R.id.list_item_text_view,mNameList);
            ListView listView = (ListView) rootView.findViewById(R.id.main_listview);
            listView.setAdapter(mArrayAdapter);
mArrayAdapter=newarrayadapter(getActivity(),R.layout.listView\u text\u layout,R.id.list\u item\u text\u view,mNameList);
ListView ListView=(ListView)rootView.findViewById(R.id.main\u ListView);
setAdapter(mArrayAdapter);
我还建议查看《使用arrayadapter的开发人员指南》或一些教程。

编辑我的答案

上课开始时

ArrayAdapter <String>mArrayAdapter; 
ArrayList<String> mNameList = new ArrayList<String>();
ArrayAdapter mArrayAdapter;
ArrayList mNameList=新的ArrayList();
在onCreate结束时:

mArrayAdapter = new ArrayAdapter<>(this,
            android.R.layout.simple_list_item_1, mNameList);
mainListView.setAdapter(mArrayAdapter);
mArrayAdapter=新阵列适配器(此,
android.R.layout.simple_list_item_1,mNameList);
mainListView.setAdapter(mArrayAdapter);

错误日志在哪里?列表视图在哪里?它在activity\u main.xml和MainActivity.java中。我可以将其初始化为null吗?我是初学者,请添加代码以执行以下操作:;初始化阵列适配器以获取列表视图项的引用。将适配器设置为listviewyes,可以设置为null。但是,编译器会在运行时再次抛出空指针异常;这个答案无法回答问题。请删除答案,并将其添加为注释。我只是在手机上运行应用程序,当我按下按钮时,会弹出一个东西,说OMG Android已停止。答案是他没有初始化适配器。你可以告诉我在上面的代码中应该在哪里进行更改吗?
mArrayAdapter = new ArrayAdapter<>(this,
            android.R.layout.simple_list_item_1, mNameList);
mainListView.setAdapter(mArrayAdapter);