Android 如果方向改变,更改布局,按钮错误

Android 如果方向改变,更改布局,按钮错误,android,onconfigurationchanged,Android,Onconfigurationchanged,我使用onConfigurationChanged方法来了解方向何时改变。但是,当我调用其他布局时,按钮不起作用 这是我的密码: IntroPage.java package com.example.mysqltest; import android.app.Activity; import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; import and

我使用
onConfigurationChanged
方法来了解方向何时改变。但是,当我调用其他布局时,按钮不起作用

这是我的密码:

IntroPage.java

package com.example.mysqltest;

import android.app.Activity;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.Toast;

public class IntroPage extends Activity implements OnClickListener {

    private Button btnlogin;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.intropage);


        btnlogin = (Button)findViewById(R.id.btnlogin); 

        btnlogin.setOnClickListener(this);

    }
    // Check screen orientation or screen rotate event here
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        setContentView(R.layout.intropage);

        // Checks the orientation of the screen for landscape and portrait
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            setContentView(R.layout.intropage_landscape);
            Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();

        } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
            Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();

        }
    }   




    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Intent i = new Intent(IntroPage.this, Login.class);
        startActivity(i);


    }



    }

我在清单xml中编写
android:configChanges=“orientation | screenSize”
。请有人帮帮我…如果按钮不起作用,我能做什么?

即使这不是处理这个问题的推荐方法,一个快速的建议是在执行
setContentView(R.layout.intropage\u景观)后再次添加这两行

建议的方法是:

  • 不要为每个方向调用
    setContentView
    。在
    onCreate
    中调用
    setContentView
    一次,并初始化所有UI元素
  • 然后对两个方向重复使用公共UI元素
  • 如果存在一些非常见的UI元素,则根据需要使用片段进行添加和删除

  • 希望这能有所帮助。

    看起来您希望收到有关方向更改的通知,但为不同的方向保留不同的布局。代码中的问题很明显-setContentView设置新的ui对象,并使用ClickListener删除旧的ui对象。
    建议:
    从活动中删除configChanges标志-因此每次旋转后都会创建活动,
    在onCreate中,与以前的值(存储在savedInstanceState中)进行比较
    -并将其保存在中(onCreate将在方向更改后接收保存的捆绑包)
    -还应将活动布局xml文件放入。

    是否应为android:configChanges=“orientation | keyboardHidden”是的,但configChange工作正常,布局更改,但按钮不起作用。建议这样做的方法是什么…我尝试了您建议的两行代码,但我有太多复杂的代码(重复行)。您建议更好的解决方案?已编辑我的答案,建议更好的解决方案。如果答案对您的情况有帮助,请接受。谢谢。
    btnlogin = (Button)findViewById(R.id.btnlogin); 
    btnlogin.setOnClickListener(this);