Java 两种布局中的动态自动增长ListView
我有一个可以在EditText元素中输入数字的应用程序,当我按下“添加”按钮时,这个数字将复制到ListView 我可以在ListView与按钮和ListView处于同一活动中时执行此操作 但当我将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
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。