Java 两种布局中的动态自动增长ListView

Java 两种布局中的动态自动增长ListView,java,android,listview,android-listview,Java,Android,Listview,Android Listview,我有一个可以在EditText元素中输入数字的应用程序,当我按下“添加”按钮时,这个数字将复制到ListView 我可以在ListView与按钮和ListView处于同一活动中时执行此操作 但当我将ListView更改为另一个活动时,应用程序崩溃,这是日志: java.lang.RuntimeException: Unable to start activity ComponentInfo{shop.ned.shahbaa/shop.ned.shahbaa.Item1}: java.lang.N

我有一个可以在EditText元素中输入数字的应用程序,当我按下“添加”按钮时,这个数字将复制到ListView

我可以在ListView与按钮和ListView处于同一活动中时执行此操作

但当我将ListView更改为另一个活动时,应用程序崩溃,这是日志:

java.lang.RuntimeException: Unable to start activity ComponentInfo{shop.ned.shahbaa/shop.ned.shahbaa.Item1}: java.lang.NullPointerException
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at shop.ned.shahbaa.Item1.onCreate(Item1.java:38)
            at android.app.Activity.performCreate(Activity.java:5231)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)
请问我如何解决这个问题?

XML:

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:scrollbarAlwaysDrawVerticalTrack="true"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent">

    <TextView
        android:textSize="22sp"
        android:textColor="#992222"
        android:text="@string/label_add_new_product_quantity"
        android:textDirection="rtl"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:layout_row="0"
        android:layout_column="0" />

    <EditText
        android:id="@+id/editTextQuantityAddProduct"
        android:hint="@string/add_number"
        android:layout_width="fill_parent"
        android:inputType="number|phone"
        android:layout_row="1"
        android:layout_column="0" />

    <TextView
        android:textSize="22sp"
        android:id="@+id/unit_KG"
        android:textColor="#992222"
        android:text="@string/unit_KG"
        android:textDirection="rtl"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:layout_row="2"
        android:layout_column="0" />


    <View
        android:layout_width="match_parent"
        android:layout_height="1.5sp"
        android:background="#ffCDCC"
        android:layout_row="3"
        android:layout_column="0" />

    <TextView
        android:textSize="22sp"
        android:layout_width="fill_parent"
        android:textColor="#992222"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="@string/label"
        android:layout_row="4"
        android:layout_column="0" />


    <TextView
        android:textSize="22sp"
        android:id="@+id/label_Item2"
        android:layout_width="fill_parent"
        android:textColor="#992222"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="@string/label_Item2"
        android:layout_row="5"
        android:layout_column="0" />

    <View
        android:layout_width="match_parent"
        android:layout_height="1.5sp"
        android:background="#ffCDCC"
        android:layout_row="6"
        android:layout_column="0" />

    <Button
        android:id="@+id/buttonConfirmAddProduct"
        android:layout_column="0"
        android:background="#D00000"
        android:textSize="22sp"
        android:textColor="#FFF"
        android:text="@string/button_confirm_adding"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:layout_row="7"
        android:layout_marginTop="10sp"/>

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/listView"
        android:layout_row="8"
        android:layout_column="0" />

</GridLayout>

班级:

package shop.ned.shahbaa;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;


public class Item1 extends ActionBarActivity {

    private ArrayAdapter<String> adapter;
    private Button add;
    private ListView cart;
    private ArrayList<String> item;
    private EditText et;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_item1);

        add = (Button)findViewById(R.id.buttonConfirmAddProduct);
        cart = (ListView)findViewById(R.id.listView);
        et = (EditText) findViewById(R.id.editTextQuantityAddProduct);
        item = new ArrayList<String>();
        for (int i=0;i<2;i++){
            item.add("Row:" + i);
        }
        adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1, item);
        cart.setAdapter(adapter);
        add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                item.add(et.getText().toString());
                adapter.notifyDataSetChanged();
            }
        });

    }
}
package shop.ned.shahbaa;
导入android.support.v7.app.ActionBarActivity;
导入android.os.Bundle;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.ListView;
导入android.widget.TextView;
导入java.util.ArrayList;
导入java.util.List;
公共类Item1扩展了ActionBarActivity{
专用阵列适配器;
私人按钮添加;
私有ListView购物车;
私有数组列表项;
私人编辑;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_item1);
add=(按钮)findViewById(R.id.buttonConfirmAddProduct);
cart=(ListView)findViewById(R.id.ListView);
et=(EditText)findViewById(R.id.editTextQuantityAddProduct);
item=newarraylist();

对于(int i=0;i你是说列表在另一个活动中?你发布的XML是否保存在文件
R.layout.activity\u item1
中?是的,我在这里说它可以与我发布的XML和类一起工作,但是当我将id更改为另一个布局中的另一个ListView时,它就不工作了。这就是安卓的工作方式,这就是为什么我不得不这么做的原因。)当我问你关于XML的问题时,我假设发布的代码是产生错误的代码,无论如何,对于位于另一个XML文件中的视图,你不能
findViewById()
,而不是你在
setContentView()中使用的文件
除非它包含在其中。非常感谢您提供这些信息,那么有没有办法将其他布局中的列表视图与此活动相匹配?嗯,我不确定您的业务逻辑,也不确定您试图实现的目标,但我认为最安全的方法是启动第二个活动并传递所需的数据(在intent的bundle中使用extra)然后第二个活动应该加载它的布局,并填充listView。