2013-09-21 84 views
0

我一直在爲我的一個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 

回答

0

logcat的將是有益的,但我認爲這個問題是在這裏

List<String> list = this.mySet.set_list; 

你會得到一個NPE因爲你還沒有iniitalized mySet

你不這樣做,直到下一行去這個方法後

createSpinner(); 

    this.mySet = new MySet(); 

在嘗試調用方法之前,您需要初始化mySet。因此,改變周圍的

this.mySet = new MySet(); 
    createSpinner(); 

上述線路穿得比較之後,我不知道你是想用

List<String> list = this.mySet.set_list; 

完成什麼他們是MySet兩個實例變量,除了沒有被初始化

編輯

在你onCreate()喲u有

setContentView(R.layout.main_activity); 

但XML你發佈你說的是activity_main.xml如果這不是在您的文章錯字那麼問題就試圖從您還沒有膨脹的layout一個View

+0

謝謝您的輸入!我試圖改變它,以便在我調用createSpinner之前初始化mySet,但它似乎仍然會得到一個NPE。 Logcat說它是由NPE造成的。什麼set_list是一個ArrayList,它存儲了在操作類(MySet.java)中完成的用戶給出的所有集合的名稱。我試圖用this.MySet.set_list中的項目填充微調器。 –

+0

是的,看我的編輯。你在做什麼似乎沒有道理。另外,如果你可以將你的logcat發佈到你的問題中,它將是非常有用的;) – codeMagic

+0

剛做了一個編輯並添加了logcat信息! –