一、如何实现一个弹窗
//首先要新建一个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应该显示的界面