<少女> 2022-11-24 12:52 采纳率: 90.9%
浏览 16
已结题

我就是想写一个只有tab导航的actionbar,为什么这里报错啊?我哪里写错了?求解,详解必采纳


ackage com.example.studytest03;

import android.app.ActionBar;
import android.app.Activity;
import android.app.FragmentTransaction;

import androidx.fragment.app.Fragment;

/*
实现各个标签页之间的切换的
 */
public class myTabListener implements ActionBar.TabListener {
    private  final Activity activity;//用来指定要加载的activity
    private final Class aClass;//用来指定加载的Fragment所对应的类
    private Fragment fragment;//用来定义Fragment对象
    public myTabListener(Activity activity, Class aClass) {
        this.activity = activity;
        this.aClass = aClass;
    }
//被选择时
    @Override
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
        if(fragment==null){
            fragment=Fragment.instantiate(activity,aClass.getName());
        ft.add(android.R.id.content.fragment,null);
        }
        ft.attach(fragment);//现实新页面
    }
//退出选择状态
    @Override
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
        if(fragment!=null){
            ft.detach(fragment);//删除旧页面
        }
    }

    @Override
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {

    }
}
package com.example.studytest03;

import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;

import android.os.Bundle;

public class MainActivity2 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        //设置actionbar为选项卡模式,并将标签页面添加到actionbar中
        ActionBar actionBar=getSupportActionBar();//获取actionbar对象
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);//设置actionbar为选项卡模式
        actionBar.setDisplayOptions(0,ActionBar.DISPLAY_SHOW_TITLE);//隐藏标题栏
        actionBar.addTab(actionBar.newTab().setText("词典").
                setTabListener((ActionBar.TabListener) new myTabListener(this, Fragment1.class)));//添加第一个标签栏
        actionBar.addTab(actionBar.newTab().setText("百科").
                setTabListener((ActionBar.TabListener) new myTabListener(this, Fragment2.class)));
        actionBar.addTab(actionBar.newTab().setText("我的").
                setTabListener((ActionBar.TabListener) new myTabListener(this, Fragment3.class)));
    }
}

为什么这里报错啊?

img


我就是想写一个只有tab导航的actionbar,为什么这里报错啊?我哪里写错了?求解,详解必采纳

img

  • 写回答

2条回答 默认 最新

  • 头发还没秃a 2022-11-24 16:05
    关注

    ft.attach() 接收的 fragment 是 android.app.Fragment 包里面的 Fragment,而你定义的 fragment 是 androidx.fragment.app.Fragment 包里面的,只需要把 import androidx.fragment.app.Fragment; 改为 import android.app.Fragment; 就行了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月1日
  • 已采纳回答 2月21日
  • 创建了问题 11月24日

悬赏问题

  • ¥15 cmd批处理参数如果含有双引号,该如何传入?
  • ¥15 fx2n系列plc的自控成型机模拟
  • ¥15 时间序列LSTM模型归回预测代码问题
  • ¥50 使用CUDA如何高效的做并行化处理,是否可以多个分段同时进行匹配计算处理?目前数据传输速度有些慢,如何提高速度,使用gdrcopy是否可行?请给出具体意见。
  • ¥15 基于STM32,电机驱动模块为L298N,四路运放电磁传感器,三轮智能小车电磁组电磁循迹(两个电机,一个万向轮),如何通过环岛的原理及完整代码
  • ¥20 机器学习或深度学习问题?困扰了我一个世纪,晚来天欲雪,能饮一杯无?
  • ¥15 c语言数据结构高铁订票系统
  • ¥15 关于wkernell.PDB加载的问题,如何解决?(语言-c#|开发工具-vscode)
  • ¥100 某宝多次访问被拒绝,求解
  • ¥15 (标签-STM32|关键词-智能小车)