安卓底部导航栏以及监听事件

好久之前就像写一个底部导航栏,但是找了很多都只是有页面,所以造成的困扰就是不知道底部导航栏对应控件的监听事件怎么写,真的花费了很多的时间和精力,直到今天,看了尚硅谷的视频,才发现就那么几句简单的代码,当时是又好气又好笑,写这篇文章 的目的,就是为了帮助到跟我一样,刻苦学习但是被困扰的人,致敬自己,也致敬你们:每一个自律且不想被生活打倒的人!
首先是布局页面main_activity:`

<RadioGroup
    android:id="@+id/rg_main"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="60dp">
    <RadioButton
        android:id="@+id/chat"
        android:text="消息"
        style="@style/button"/>
    <RadioButton
        android:id="@+id/contact"
        android:text="记事"
       style="@style/button"/>
    <RadioButton
        android:id="@+id/setting"
        android:background="@drawable/main_button_bg_seleor"
        android:text="我的"
        style="@style/button"
        />
</RadioGroup>`

顺便贴一下两个xml文件main_button_bg_seleor:

 <item
        android:drawable="@color/teal_200"
        android:state_checked="false">
    </item>
    <item
        android:drawable="@color/purple_200"
        android:state_checked="true">
    </item>

然后是text color:

<item
    android:color="@color/white"
    android:state_checked="true">
</item>
    <item
        android:color="@color/black"
        android:state_checked="false">
    </item>

然后在布局页面引用就行了。
MainActivity的代码:


```java
public class MainActivity extends FragmentActivity {
    
    
    private RadioGroup rg_main;
    private ChatFragment chatFragment;
    private ContactFragment contactFragment;
    private SettingFragment settingFragment;

    private Button a;

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

    private void initListenter() {
    
    
        rg_main.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
    
    
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
    
    
                Fragment fragment=null;
                switch (checkedId){
    
    
                    case R.id.chat:
                        fragment=chatFragment;
                        break;
                    case R.id.contact:
                        fragment=contactFragment;
                        break;
                    case R.id.setting:
                        fragment=settingFragment;
                        break;
                }
                switchFragment (fragment);
            }

            private void switchFragment(Fragment fragment) {
    
    
                FragmentManager fragmentManager = getSupportFragmentManager();
                fragmentManager.beginTransaction().replace(R.id. fl_main,fragment).commit();
            }
        });
        rg_main.check(R.id.chat);
    }

    private void initData() {
    
    
        chatFragment  = new ChatFragment();
        contactFragment  = new ContactFragment();
        settingFragment  = new SettingFragment();

    }

    private void initView() {
    
    
        rg_main=findViewById(R.id.rg_main);
    }
}
然后新建一个Fragment,以及布局:
首先是布局页面:

```java

```java
 <ScrollView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">
    <TextView
        android:id="@+id/a"
        android:text="shezhi"
        android:textSize="30sp"
        android:gravity="center"
        android:layout_gravity="center"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    </ScrollView>
    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:text="tuichu"
        android:textSize="20sp"
        android:layout_gravity="center"/>
很简单,然后就是我一直想知道的:

```java

```java
public class SettingFragment extends Fragment {
    private Button btn;
    private TextView a;
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = View.inflate(getActivity(), R.layout.setting_fragment, null);
        initVive(view);
        return view;    }

    private void initVive(View view) {
        btn=view.findViewById(R.id.btn);
        a=view.findViewById(R.id.a);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        initData();
    }

    private void initData() {
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getActivity().runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(getActivity(),"skcso",Toast.LENGTH_LONG).show();
                    }
                });
                a.setText("icshlsoic");
            }
        });
    }
}

然后到这里,就能运行了,还有两个Fragment以及页面,写法都一样;
最后代码以及视频教程均来自[哔哩哔哩尚硅谷](https://www.bilibili.com/video/BV1cW411V7yd?p=18&spm_id_from=pageDriver)
也许多年之后我也成为了程序员中的大佬,或者碌碌无为,又或者我从事跟程序员无关的工作,我都会很感谢现在努力的自己,天道酬勤!

											2021年3月21日

猜你喜欢

转载自blog.csdn.net/banxian12138/article/details/115053360