Android-Navigation(导航)切换Fragment&动画(Animations)
·
创建两个Fragment


创建navigation资源文件



向资源文件添加Fragment

activity.xml


跳转传参
传参方式一
这种方式只能给自己设置,只适合静态传递


方式二动态传递
homeFragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View viewFragment = inflater.inflate(R.layout.fragment_home, container, false);
Button but3 = viewFragment.findViewById(R.id.button3);
but3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//getView相当于 inflater.inflate(R.layout.fragment_home, container, false)
EditText editText = getView().findViewById(R.id.editText01);
if (editText.getText().toString().isEmpty()) {
return;
}
//传递值
Bundle bundle = new Bundle();
bundle.putString("my_name",editText.getText().toString());
NavController navController = Navigation.findNavController(v);
//从home跳转到detail
navController.navigate(R.id.action_homeFragment_to_detailFragment,bundle);
}
});
return viewFragment;
}
detailFragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//获取对应的fragment
View viewFragment = inflater.inflate(R.layout.fragment_detail, container, false);
//获取静态中参数
String name = getArguments().getString("name");
//获取从home fragment 传递过来的参数
String myName = getArguments().getString("my_name");
//设置值
TextView text2 = viewFragment.findViewById(R.id.textView2);
text2.setText(myName);
Button but = viewFragment.findViewById(R.id.button);
but.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
NavController navController = Navigation.findNavController(v);
//从detail跳转到home
navController.navigate(R.id.action_detailFragment_to_homeFragment);
}
});
return viewFragment;
}
标题返回后退

package com.example.navigationdemo;
import androidx.appcompat.app.AppCompatActivity;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.NavigationUI;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
NavController navController;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
navController = Navigation.findNavController(this, R.id.fragment);
//actionBar 左上角后退键
NavigationUI.setupActionBarWithNavController(this, navController);
}
// 重写 onSupportNavigateUp 方法
@Override
public boolean onSupportNavigateUp() {
return navController.navigateUp();
}
}
切换动画效果(Animations)
创建资源


从左边滑过来
其他动画标签自行查询
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!--0% 正中间 -->
<translate
android:fromXDelta="-100%"
android:toXDelta="0%"
android:duration="300"
>
</translate>
</set>
设置

viewModel 之数据传动
更多推荐



所有评论(0)