一个测试方向代码&布局变化:
主StartActivity包含3个按钮(button1,button2,button3)&包含片段空间的线性布局。
单击button1时,片段显示fragment1; Button2显示了fragment2等。
肖像 :(文件名 - 布局/ activity_start.xml)
格局 :(文件名 - layout-land / activity_start.xml)
的问题:
当我改变方向时,按钮表现异常。他们第一次点击不工作。只有在我点击两次后才能完成工作。
每次更改方向时都会创建此StartActivity。 (onCreate()中的吐司加速(
我只是想在方向改变时:布局应相应改变&活动的所有组件(如按钮)应按预期工作。 并且不应该重新创建活动。
代码:
StartActivity.java
public class StartActivity extends FragmentActivity {
private static final String TAG = "StartActivity";
private Fragment newFragment;
private Button b1, b2, b3;
@Override
protected void onCreate(Bundle savedInstanceState) {
try {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
Toast.makeText(this, "onCreate", Toast.LENGTH_SHORT).show();
b1 = (Button) findViewById(R.id.button1);
b2 = (Button) findViewById(R.id.button2);
b3 = (Button) findViewById(R.id.button3);
b1.setOnClickListener(buttonClickListener);
b2.setOnClickListener(buttonClickListener);
b3.setOnClickListener(buttonClickListener);
FragmentManager fm = this.getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
StartFragment startFragment = new StartFragment();
ft.add(R.id.selectedfragment, startFragment);
ft.commit();
} catch (Exception e) {
Log.e(TAG, e.toString());
}
}
private OnClickListener buttonClickListener = new OnClickListener() {
@Override
public void onClick(View view) {
try {
switch (view.getId()) {
case R.id.button1:
newFragment = new Fragment1();
break;
case R.id.button2:
newFragment = new Fragment2();
break;
case R.id.button3:
newFragment = new Fragment3();
break;
default:
newFragment = new StartFragment();
break;
}
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.selectedfragment, newFragment);
ft.addToBackStack(null);
ft.commit();
} catch (Exception e) {
Log.e(TAG, e.toString());
}
}
};
}
Manifest.xml部分
<activity
android:name="com.ri.fragmenttest.StartActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
答案 0 :(得分:0)
您的根LinearLayout是水平的,它包含另一个垂直的LinearLayout。
因此,您的按钮在水平排列的LinearLayout中堆叠在一起。
只需将内部布局更改为水平。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/Snow"
android:orientation="horizontal"
tools:context=".StartActivity" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="top"
android:orientation="vertical" > <----- HERE