您的位置:首页 > 其它

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

2017-06-08 15:02 681 查看
先看图,再描述



上图的效果中,我们看到是由三个界面组成:点我界面, 设置界面, 自动返回界面组成,并实现了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就不贴出来了.

以上,大家就可以实现了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐