我一直在为我的一个Assignments创建一个Android应用程序,并且遇到了这个问题。我正在制作一个动态填充自己的微调器,但是应用程序似乎没有打开,我似乎无法找到问题所在。任何帮助或提示将不胜感激!当你按下按钮,创建集用Android创建动态填充Spinners
的应用基本上创建集,则需在EditText上输入的字符串,并将动态使用从EditText上所采取的字符串填充微调。
基本上我的活动课是这样的:
public class MainActivity extends Activity
{
public final static String DISPLAY_MESSAGE = "com.android.setoperations.MESSAGE";
private MySet mySet;
private MySet set_list;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
this.mySet = new MySet();
Spinner set_spinner = (Spinner) findViewById(R.id.set_spinner);
List<String> list = this.mySet.set_list;
ArrayAdapter<String> setNamesAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list);
set_spinner.setAdapter(setNamesAdapter);
}
public void createSet(View view){
EditText editText = (EditText) findViewById(R.id.element);
String element = editText.getText().toString();
this.mySet.createSet(element);
}
}
而且,我的微调和按钮保存设置在main_activity.xml布局是这样的:
<Spinner
android:id="@+id/set_spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Create Set"
android:onClick="createSet"/>
最后,我的类操作(MySet.java)是这样的:
ArrayList<String> set_list = new ArrayList<String>();
public void createSet(String set_name){
set_list.add(set_name);
}
谢谢!应用程序会尝试运行,然后自行关闭并停止。
这里是我的logcat的信息:
09-21 20:08:18.247: E/AndroidRuntime(1070): FATAL EXCEPTION: main
09-21 20:08:18.247: E/AndroidRuntime(1070): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.setoperations/com.android.setoperations.MainActivity}: java.lang.NullPointerException
09-21 20:08:18.247: E/AndroidRuntime(1070): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
09-21 20:08:18.247: E/AndroidRuntime(1070): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
09-21 20:08:18.247: E/AndroidRuntime(1070): at android.app.ActivityThread.access$600(ActivityThread.java:141)
09-21 20:08:18.247: E/AndroidRuntime(1070): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
09-21 20:08:18.247: E/AndroidRuntime(1070): at android.os.Handler.dispatchMessage(Handler.java:99)
09-21 20:08:18.247: E/AndroidRuntime(1070): at android.os.Looper.loop(Looper.java:137)
09-21 20:08:18.247: E/AndroidRuntime(1070): at android.app.ActivityThread.main(ActivityThread.java:5103)
09-21 20:08:18.247: E/AndroidRuntime(1070): at java.lang.reflect.Method.invokeNative(Native Method)
09-21 20:08:18.247: E/AndroidRuntime(1070): at java.lang.reflect.Method.invoke(Method.java:525)
09-21 20:08:18.247: E/AndroidRuntime(1070): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
09-21 20:08:18.247: E/AndroidRuntime(1070): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-21 20:08:18.247: E/AndroidRuntime(1070): at dalvik.system.NativeStart.main(Native Method)
09-21 20:08:18.247: E/AndroidRuntime(1070): Caused by: java.lang.NullPointerException
09-21 20:08:18.247: E/AndroidRuntime(1070): at android.widget.ArrayAdapter.getCount(ArrayAdapter.java:330)
09-21 20:08:18.247: E/AndroidRuntime(1070): at android.widget.AbsSpinner.setAdapter(AbsSpinner.java:114)
09-21 20:08:18.247: E/AndroidRuntime(1070): at android.widget.Spinner.setAdapter(Spinner.java:382)
09-21 20:08:18.247: E/AndroidRuntime(1070): at com.android.setoperations.MainActivity.onCreate(MainActivity.java:32)
09-21 20:08:18.247: E/AndroidRuntime(1070): at android.app.Activity.performCreate(Activity.java:5133)
09-21 20:08:18.247: E/AndroidRuntime(1070): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
09-21 20:08:18.247: E/AndroidRuntime(1070): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
09-21 20:08:18.247: E/AndroidRuntime(1070): ... 11 more
谢谢您的输入!我试图改变它,以便在我调用createSpinner之前初始化mySet,但它似乎仍然会得到一个NPE。 Logcat说它是由NPE造成的。什么set_list是一个ArrayList,它存储了在操作类(MySet.java)中完成的用户给出的所有集合的名称。我试图用this.MySet.set_list中的项目填充微调器。 –
是的,看我的编辑。你在做什么似乎没有道理。另外,如果你可以将你的logcat发布到你的问题中,它将是非常有用的;) – codeMagic
刚做了一个编辑并添加了logcat信息! –