-1
微調框似乎因爲您可以看到其顏色而創建;但是,您無法選擇它。更糟糕的是,當您添加setPrompt
(在下面的代碼中註釋掉)時,會拋出NullPointerException
。帶setPrompt的Unopenable(程序化)微調框空指針異常
LinearLayout preMadeWrapper = (LinearLayout) findViewById(R.id.myId);
int firstHeight = (int) getResources().getDimension(R.dimen.firstHeight);
// Fist Wrapper (blue)
LinearLayout firstWrapper = new LinearLayout(this,null,0,R.style.centerEverythingStyle);
LinearLayout.LayoutParams DayDimensionsLinear = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, firstHeight);
firstWrapper.setOrientation(LinearLayout.HORIZONTAL);
preMadeWrapper.addView(firstWrapper,DayDimensionsLinear);
firstWrapper.setBackgroundColor(Color.parseColor("#0000ff"));
// Second Wrapper (red)
LinearLayout secondWrapper = new LinearLayout(this,null,0,R.style.centerEverythingStyle);
LinearLayout.LayoutParams secondWrapperDimensions = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT);
secondWrapper.setOrientation(LinearLayout.VERTICAL);
firstWrapper.addView(secondWrapper,secondWrapperDimensions);
secondWrapper.setBackgroundColor(Color.parseColor("#ff0000"));
// The Spinner (green)
Spinner mySpinner = new Spinner(this, null,0,R.style.SpinnerStyle);
int mySpinnerWidth = (int) getResources().getDimension(R.dimen.mySpinnerWidth);
int mySpinnerheight = (int) getResources().getDimension(R.dimen.mySpinnerheight);
Spinner.LayoutParams mySpinnerDimensions = new Spinner.LayoutParams(mySpinnerWidth, mySpinnerheight);
secondWrapper.addView(mySpinner,mySpinnerDimensions);
mySpinner.setBackgroundColor(Color.parseColor("#00ff00"));
// I've tried multiple ArrayAdapter, none help the problem.
/* ArrayAdapter from ArrayList
ArrayList<String> spinnerArray = new ArrayList<String>();
spinnerArray.add("first option");
spinnerArray.add("second option");
spinnerArray.add("third option");
spinnerArray.add("forth option");
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, spinnerArray);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mySpinner.setAdapter(spinnerArrayAdapter);
*/
// ArrayAdapter from String Array
String[] items = {"first option","second option","third option","forth option"};
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, items);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mySpinner.setAdapter(adapter);
// ArrayAdapter from Array File.
//ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, getResources().getStringArray(R.array.my_arrays));
//mySpinner.setAdapter(spinnerArrayAdapter);
// If you uncomment this you get an error.
//mySpinner.setPrompt("My Prompt");
如果取消對最後一行將得到以下錯誤:
08-05 12:48:55.319 25518-25518/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: me.tristyn.pointsofinterest, PID: 25518
java.lang.RuntimeException: Unable to start activity ComponentInfo{me.tristyn.pointsofinterest/me.tristyn.pointsofinterest.activity_item}: java.lang.NullPointerException: Attempt to invoke interface method 'void android.widget.Spinner$SpinnerPopup.setPromptText(java.lang.CharSequence)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2988)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1631)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6682)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'void android.widget.Spinner$SpinnerPopup.setPromptText(java.lang.CharSequence)' on a null object reference
at android.widget.Spinner.setPrompt(Spinner.java:915)
at me.tristyn.pointsofinterest.activity_item.onCreate(activity_item.java:139)
at android.app.Activity.performCreate(Activity.java:6942)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2880)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2988)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1631)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6682)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
這似乎暗示微調是null
,出於某種原因。
編輯2:我沒有這方面的解決方案,但解決方法是隻是膨脹佈局。
LayoutInflater inflater = LayoutInflater.from(this);
View inflatedLayout= inflater.inflate(R.layout.myLayout, null, false);
preMadeWrapper.addView(inflatedLayout);
糾正我,如果我錯了,但不是這只是從ArrayList的ArrayAdapters註釋掉的代碼?我已經嘗試了我已經註釋過的那個。你的ArrayAdaptor確實使用了一個我無法使用的構造函數,因爲它是以編程方式編寫的,並且你指向了一個不同的資源,我不確定它是什麼。另外,聽衆沒有任何影響。 我可能是錯的,但我不認爲這是ArrayAdaptor的問題。 – TrystynAlxander