當我啓動應用程序時,按鈕有效。每次旋轉手機時,都會調用onConfigurationChanged。然而,按下按鈕後,onClick不再被調用。我該如何解決這個問題?提前致謝。更改方向後按鈕不能正常工作
PS:實際的程序是一個有很多按鈕的計算器。
package com.thomas.test.app;
import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity implements View.OnClickListener
{
Button button1;
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE)
setContentView(R.layout.activity_main_h);
else if (newConfig.orientation==Configuration.ORIENTATION_PORTRAIT)
setContentView(R.layout.activity_main_v);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_v);
button1 = (Button)findViewById(R.id.button1);
button1.setOnClickListener(this);
}
@Override
public void onClick(View view) {
Log.d("XYZ", "onClick: IN");
if (view.getId()==R.id.button1)
button1.setText("PRESSED");
}
}
這是activity_main_h.xml(activity_main_v是除了顯示「垂直」相同):
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.thomas.test.app.MainActivity">
<TextView
android:text="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button1"
android:layout_below="@+id/textView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
有一種更爲標準的方式可以將不同的佈局分配給不同的方向,而無需檢查方向本身:請參閱layout-land。如果你堅持使用這個實現,並且將CONFIG-CHANGES屬性設置爲你的活動,那麼它不會被重新創建,你的onCreate方法不會被調用,所以把初始化和監聽器賦值放到你的onResume中。 – rekaszeru
是你的問題解決了嗎?親愛的,告訴你是怎麼做到的。我也有一個計算器,但一些按鈕不能在lansdscape模式下工作... 我的manisfest文件中沒有configchanges屬性。好心幫助 –