利用同一个Activity界面实现二个不同的界面之间的跳转

本文介绍了一种在Android应用中实现界面切换的方法,并详细解释了如何通过CheckBox保存用户选择的状态,以及如何根据不同界面需求展示相应的布局。此外,还介绍了如何在状态改变时弹出提示对话框。

先看图,再描述
这里写图片描述

上图的效果中,我们看到是由三个界面组成:点我界面, 设置界面, 自动返回界面组成,并实现了checkBox保存状态和弹出dialog.

但是实际上,只用了点我界面和设置界面(和自动返回界面共用一个界面).

所以实现如下:分散实现如下
第一步:checkBox的保存状态

//直接设置BUtton事件即可解决
 <CheckBox
            android:id="@+id/switch_transferr"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginRight="20dp"
            android:button="@drawable/bg_wifi_switch"/>

第二步,界面之间的跳转

//点我界面
findViewById(R.id.click).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //跳入到设置界面
                MainActivity.start(TextActivity.this,MainActivity.SETTING_TITLE);
            }
        });

//共用界面
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    //title传输标识
    public static final String TITLE_TAG = "TITTL_TAG";
    //设置界面标题
    protected static final String SETTING_TITLE = "设置";
    //自动返回界面标题
    protected static final String AUTO_RETURN_TITLE = "自动返回";

    private CheckBox mCheckBox;
    private RelativeLayout mRelSetting;
    private LinearLayout mSwitch_linearLayout;
    private TextView mTitleText;
    private String mTitleStr;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        inData();
        //头部设置标题
        mTitleText = (TextView) findViewById(R.id.title);
        //选择框
        mCheckBox = (CheckBox) findViewById(R.id.switch_transferr);
        //第一个设置界面的样式
        mRelSetting = (RelativeLayout) findViewById(R.id.auto_setting);
        mRelSetting.setOnClickListener(this);
        //第二个选择界面的设置
        mSwitch_linearLayout = (LinearLayout) findViewById(R.id.switch_linearLayout);
        initTieltStr();
        initView();
        initListener();
    }

    //设置checkBox的监听
    private void initListener() {
        mCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                //根据返回的boolean值去判断
                if(isChecked) {
                    //保存当前的状态值,并弹出dialoag
                    SettingSharedPreUtils.setWifiSwitchState(getApplicationContext(),true);
                    mCheckBox.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            String msg = "自动转入已开启,账户余额将在每日凌晨自动转入铜宝";
                            showTipsDialog(msg);
                        }
                    },200);
                }else {
                    //同样保存期状态值,并弹出dialog
                    SettingSharedPreUtils.setWifiSwitchState(getApplicationContext(),false);
                    mCheckBox.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            String msg = "自动转入已关闭";
                            showTipsDialog(msg);
                        }
                    },200);
                }
            }
        });
    }

    //弹出Dialog
    private void showTipsDialog(String msg) {
        new CommonDialog(this).builder().setTitle("提示")
                .setCanceledOnTouchOutside(false)
                .setContentMsg(msg)
                .setPositiveBtn("确定", new CommonDialog.OnPositiveListener() {
                    @Override
                    public void onPositive(View view) {
                        finish();
                    }
                }).show();
    }

    //判断显示的界面
    private void initView() {
        if(TextUtils.equals(mTitleStr,SETTING_TITLE)) {
            //设置界面
            mRelSetting.setVisibility(View.VISIBLE);
            mSwitch_linearLayout.setVisibility(View.GONE);
        }else if(TextUtils.equals(mTitleStr,AUTO_RETURN_TITLE)){
            //自动返回界面
            mRelSetting.setVisibility(View.GONE);
            mSwitch_linearLayout.setVisibility(View.VISIBLE);
            //获取CheckBox的状态
            if(SettingSharedPreUtils.getWifiSwitchState(this,false)) {
                mCheckBox.setChecked(true);
            }else {
                mCheckBox.setChecked(false);
            }
        }
    }

    //获取头部的监听数据
    private void initTieltStr() {
        if(TextUtils.equals(mTitleStr,SETTING_TITLE)) {
            mTitleText.setText(mTitleStr);
        }else if(TextUtils.equals(mTitleStr,AUTO_RETURN_TITLE)){
            mTitleText.setText(mTitleStr);
        }
    }

    //获取数据
    private void inData() {
        mTitleStr = getIntent().getStringExtra(TITLE_TAG);
    }

    //开启当前的activity
    public static void start(Context context,String title) {
        Intent intent  = new Intent(context,MainActivity.class);
        intent.putExtra(TITLE_TAG,title);
        context.startActivity(intent);
    }

    @Override
    public void onClick(View v) {
        //点击跳入自动返回界面
        MainActivity.start(this,AUTO_RETURN_TITLE);
    }
}

//dialog和sharePrefrence就不贴出来了.

以上,大家就可以实现了

实现三个界面之间跳转,可以使用Intent和startActivity方法。以下是一种实现方式: 1. 创建三个Activity类,分别为ActivityA、ActivityB、ActivityC。 2. 在ActivityA中添加一个按钮,给按钮设置点击事件,在点击事件中创建一个Intent对象,并使用Intent的setClass方法将ActivityB作为目标Activity,最后调用startActivity方法启动ActivityB。 示例代码: ```java Button btn = findViewById(R.id.btn_activity_a); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(ActivityA.this, ActivityB.class); startActivity(intent); } }); ``` 3. 在ActivityB中同样添加一个按钮,给按钮设置点击事件,使用Intent跳转ActivityC。 示例代码: ```java Button btn = findViewById(R.id.btn_activity_b); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(ActivityB.this, ActivityC.class); startActivity(intent); } }); ``` 4. 在ActivityC中同样添加一个按钮,给按钮设置点击事件,使用Intent返回到ActivityA。 示例代码: ```java Button btn = findViewById(R.id.btn_activity_c); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(ActivityC.this, ActivityA.class); startActivity(intent); } }); ``` 需要注意的是,要在AndroidManifest.xml文件中注册三个Activity,否则应用无法正常运行。 以上就是实现三个界面之间相互跳转的基本流程。当然,还有其他更复杂的跳转方式,例如使用Intent传递数据等,具体可以根据自己的需求来实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值