私がポートレートモードでアプリを起動すると、正常に動作します。nullPointerException on setLayoutParams
しかし、風景モードで起動すると、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ものとします!!!
(..)findViewByIdからそれを再初期化しようとルックス、あなただけのアンドロイドmainfest.xmlに言及する必要があり、そのアンドロイド:configChanges = "orientation"と同じ名前のXMLファイルとすべてのIDが同じであっても、リソースレイアウトの別のフォルダを作成すると、アンドロイドはレイアウトを自動的に横または縦に変更します。あなたはどんなビューのレイアウトパラメータも変更するためにonconfigchangedを聞く必要はありませんし、横並びに関してlayout-landフォルダに同じ名前の同じxmlファイルを作成することで、プログラム内でonConfigChanged() 。 –
私はちょうど述べたものを試して、それは動作します。しかし、それは動きがオリエンテーションの変更で再起動される**巨大な**欠点を伴います:( – GAMA
いいえ、それは再開できません、あなたはまだonConfigChanged()で何か言及していますか? –