<少女> 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 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分