如果我以縱向模式啓動應用程序,它可以正常工作。nullLoinoutParams上的nullPointerException
但是,如果我將其啓動爲橫向模式,則當我嘗試通過使用setLayoutParams
嘗試調整視圖的大小時,它會給出nullPointerException
。
一段代碼
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.companygraph);
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE))
.getDefaultDisplay();
if (display.getWidth() > display.getHeight()) {
changeToLandscape();
}
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
changeToLandscape();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
changeToPortrait();
}
}
public void changeToLandscape() {
//IT GIVES NULLPOINTEREXCEPTION HERE.
plot.setLayoutParams(new LinearLayout.LayoutParams(500, 300));
}
public void changeToPortrait() {
//IT GIVES NULLPOINTEREXCEPTION HERE.
plot.setLayoutParams(new LinearLayout.LayoutParams(300, 500));
}
companygraph.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/linearLayout">"
<com.androidplot.xy.XYPlot
android:id="@+id/companyPlot"
android:layout_width="300px"
android:layout_height="500px"
title=""/>
</LinearLayout>
任何幫助將LIFE-SAVER !!!
你不需要在onConfigChanged()方法做任何事情,你只需要在安卓mainfest.xml提,那機器人:configChanges =「orientation」並在資源佈局中創建另一個文件夾 - 同名的xml文件和所有的id甚至相同,android操作系統將自動更改相應的橫向或縱向佈局。你不需要聽onconfigchanged只更改任何視圖的佈局參數,甚至不需要在程序中提及onConfigChanged(),如果你通過在layout-land文件夾中創建與景觀相同名稱的同一個xml文件。 – 2011-12-26 13:25:44
我試過你剛纔所說的,它的工作原理。但它帶來**巨大的**缺點,活動重新啓動方向變化:( – GAMA 2011-12-27 04:24:47
沒有它不能被重新啓動,你仍然提到onConfigChanged()中的東西?... ...刪除方法..! – 2011-12-27 06:09:24