Dialog弹窗的简单应用及如何从某一个Activity跳转到另一个Activity中的某一个fragment界面

一、如何实现一个弹窗

//首先要新建一个XML文件,在这里面实现出你想要的弹窗效果,假设此文件命名为Kfk.xml

//在某Activity中 创建Dialog对象
Dialog dialog = new Dialog(this);

// 设置弹窗的布局为Kfk.xml
dialog.setContentView(R.layout.Kfk);

//设置某控件的点击事件
dialog.findViewById(R.id.SomeButton).setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
        //关闭弹窗
        dialog.dismiss();
}
});

//显示弹窗
dialog.show();

//调整弹窗的大小
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
layoutParams.copyFrom(dialog.getWindow().getAttributes());
layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; // 匹配父容器宽度
layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT; // 匹配父容器高度
dialog.getWindow().setAttributes(layoutParams);

//使弹窗背景透明
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);

实现效果:

二、从某一个Activity跳转到另一个Activity中的某一个fragment界面

假设从一个activity需要跳转到mainActivity中的某个fragment

在activity中可以做一个跳转到mainActivity的点击

//某控件的一个点击事件
findViewById(R.id.Someid).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
        //从当前activity跳转到mainActivity
        Intent i = new Intent(activity.this,mainActivity.class);
        // 传递参数然后到mainActivity中获取,键:"key",值"value"
        i.putExtra("key", "value");
        // 启动跳转
        startActivity(i);
}
});

然后到mainActivity中获取这个值,在onCreate方法中获取传递过来的参数

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MessageFragment Fragment1 = new MessageFragment();
        ContactFragment Fragment2 = new ContactFragment();
        DynamecsFragment Fragment3 = new DynamecsFragment();
        // 获取传递过来的参数
        Bundle extras = getIntent().getExtras();
        if (extras != null) {
            // 获得键为"key"的值并赋给变量value
            String value = extras.getString("key");

            //.equals(value)方法用来判断两个字符串的内容是否相等,如果变量value中的值等于"value2",那么条件为真
            if ("value2".equals(value)) {     
                //在这里面可以添加你要跳转到mainActivity中某个fragment的声明
                getSupportFragmentManager().beginTransaction()
                        .show(Fragment3)
                        .hide(Fragment2)  
                        .hide(Fragment1)
                        .commit(); 
                //这里是从activity中点击触发之后跳转到mainActivity并显示fragment3      
            }
        }
            //else中展示的则是原本mainActivity应该第一个展示的fragment1
            else{
                getSupportFragmentManager().beginTransaction()
                        .show(Fragment1)
                        .hide(Fragment2)  
                        .hide(Fragment3)
                        .commit(); 
            }
    }

 这种方法是在运行mainActivity先让Bundle获取一个值,如果这个值是从另一个activity跳转之后所获取的值则先进入if中进行特定的fragment3界面的显示,否则进入else中照常显示原本运行mainActivity应该显示的界面

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值