Android-Fragment实现切换页面数据的传递

在开发app的时候,可能有时候需要将当前窗口中读入的数据传递到下一个窗口中去。
解决这个需求的方法就是使用Bundle 来存储读入的数据,然后将bundle传入到下一个页面中去
效果图
Android-Fragment实现切换页面数据的传递_第1张图片
Android-Fragment实现切换页面数据的传递_第2张图片
点击切换后
Android-Fragment实现切换页面数据的传递_第3张图片
第一个HomeFragment代码

package com.example.navgationdemo03;


import android.os.Bundle;

import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;

import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.Toast;


/**
 * A simple {@link Fragment} subclass.
 */
public class HomeFragment extends Fragment {


    public HomeFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_home2, container, false);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        getView().findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EditText editText = getView().findViewById(R.id.editText);
                String value = editText.getText().toString();
                Bundle bundle = new Bundle();
                bundle.putString("my_string",value);
                if(TextUtils.isEmpty(value)){
                    Toast.makeText(getActivity(),"请输入消息",Toast.LENGTH_SHORT).show();
                    return;
                }
                NavController controller = Navigation.findNavController(v);
                controller.navigate(R.id.action_homeFragment_to_detailFragment,bundle);
            }
        });
    }
}
//这段代码重点就在Bundle 那一段

第二个Fragment代码

package com.example.navgationdemo03;


import android.os.Bundle;

import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;


/**
 * A simple {@link Fragment} subclass.
 */
public class DetailFragment extends Fragment {


    public DetailFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_detail2, container, false);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        TextView textview = getView().findViewById(R.id.textView3);
        String value = getArguments().getString("my_string");
        textview.setText(value);
    }
}
//重点就在getArguments()通过这个方法可以获取到通过Bundle传过来的键,从而访问这个键的值

Android-Fragment实现切换页面数据的传递_第4张图片

你可能感兴趣的:(Android,JAVA)