我想将项目添加到微调框,但出现错误“不幸的是,我的应用程序已停止工作”。我在strings.xml中创建了一个字符串数组,其中我有一些项目。当用户从MainActivity中选择添加项目时,会出现一个带有按钮的editText,并且我想要将editText中的任何内容传递给微调器。微调器位于activity_main.xml中,我正在处理addactivity.xml。我如何将新项目从EditText(在addactivity.xml和AddActivity.java中)传递给MainActivity.java和activity_main.xml中的微调器?将项目添加到微调框
这里是我的代码:
public class AddActivity extends Activity{
Spinner spnr1;
EditText edtxAddActivity;
ArrayAdapter<String> spinnerAdapter;
Button btnAddActivity;
String[] actArray;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.addactivity);
addActivityButton();
}
public void addActivityButton() {
// TODO Auto-generated method stub
edtxAddActivity = (EditText) findViewById(R.id.etAddActivity);
spnr1 = (Spinner) findViewById(R.id.spinner1);
actArray = getResources().getStringArray(R.array.activities_array);
spinnerAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,actArray);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spnr1.setAdapter(spinnerAdapter);
btnAddActivity= (Button) findViewById(R.id.btAddActivity);
btnAddActivity.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String newactivity = "" + edtxAddActivity.getText().toString();
spinnerAdapter.add(newactivity);
spinnerAdapter.notifyDataSetChanged();
}
});
}
}
这是我的strings.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<string name="app_name">MyAdroidApp</string>
<string name="activity_prompt">Choose an activity</string>
<string-array name="activities_array">
<item>5-a-side</item>
<item>Football</item>
<item>Basketball</item>
<item>Table Tennis</item>
<item>Add</item>
</string-array>
显示的错误如下。
07-24 14:08:43.397: E/AndroidRuntime(24798): FATAL EXCEPTION: main
07-24 14:08:43.397: E/AndroidRuntime(24798): Process: com.example.myAndroidApp, PID: 24798
07-24 14:08:43.397: E/AndroidRuntime(24798): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myAndroidApp/com.example.myAndroidApp.AddActivity}: java.lang.NullPointerException
07-24 14:08:43.397: E/AndroidRuntime(24798): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
07-24 14:08:43.397: E/AndroidRuntime(24798): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
07-24 14:08:43.397: E/AndroidRuntime(24798): at android.app.ActivityThread.access$800(ActivityThread.java:135)
07-24 14:08:43.397: E/AndroidRuntime(24798): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
07-24 14:08:43.397: E/AndroidRuntime(24798): at android.os.Handler.dispatchMessage(Handler.java:102)
07-24 14:08:43.397: E/AndroidRuntime(24798): at android.os.Looper.loop(Looper.java:136)
07-24 14:08:43.397: E/AndroidRuntime(24798): at android.app.ActivityThread.main(ActivityThread.java:5001)
07-24 14:08:43.397: E/AndroidRuntime(24798): at java.lang.reflect.Method.invokeNative(Native Method)
07-24 14:08:43.397: E/AndroidRuntime(24798): at java.lang.reflect.Method.invoke(Method.java:515)
07-24 14:08:43.397: E/AndroidRuntime(24798): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
07-24 14:08:43.397: E/AndroidRuntime(24798): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
07-24 14:08:43.397: E/AndroidRuntime(24798): at dalvik.system.NativeStart.main(Native Method)
07-24 14:08:43.397: E/AndroidRuntime(24798): Caused by: java.lang.NullPointerException
07-24 14:08:43.397: E/AndroidRuntime(24798): at com.example.myAndroidApp.AddActivity.addActivityButton(AddActivity.java:46)
07-24 14:08:43.397: E/AndroidRuntime(24798): at com.example.socialactivities.AddActivity.onCreate(AddActivity.java:33)
07-24 14:08:43.397: E/AndroidRuntime(24798): at android.app.Activity.performCreate(Activity.java:5231)
07-24 14:08:43.397: E/AndroidRuntime(24798): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
07-24 14:08:43.397: E/AndroidRuntime(24798): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
07-24 14:08:43.397: E/AndroidRuntime(24798): ... 11 more
的问题是,spinnerAdapter产生一个NullPointerException,因为列表视图可能是空的或不初始化。我怎样才能初始化我的数组?我的字符串数组在值中是在array.xml中。在com.example.myAndroidApp.AddActivity.addActivityButton(AddActivity.java:46)
是行56这一个:String newactivity =“”+ edtxAddActivity.getText()。toString();?也许你试图设置适配器两次,将spnr1.setAdapter(spinnerAdapter)放在spnr1 = findViewById(R.id.spinner1) – Sherekan
以下如果我这样做,我的应用程序甚至不能进入页面AddActivity。它说“不幸......”。 – user3561214
什么是第56行? – Sherekan