在应用程序的所有活动中重用操作栏

2024-05-13

我创建了一个 MenuActivity,它有一个操作栏和一个拆分操作栏。我想将此操作栏和 splitactionbar 视图用于我的应用程序中的所有活动。我是 android 的新手,所以有人可以逐步指导我。

另外,我试图将搜索图标放在操作栏上,该图标现在出现在 SplitActionBar 上。我在 SplitActionBar 上有四个图标,我想在操作栏上而不是 SplitActionBar 上显示搜索图标。搜索图标是一个SearchView项目,单击它会在ActionBar上展开,非常不整洁。我希望它出现在 ActionBar 的最右侧位置,并在单击时展开。

这是MenuACTivity.java:

package com.example.travelplanner;

import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;

import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.app.ActionBar;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.TextView;

import com.example.travelplanner.R;

public class MenuActivity extends Activity implements OnItemClickListener{

    Timer t1;
    TimerTask tt1;
    ImageView slide;
    int currindex = 0;
    ActionBar actionBar;
    ArrayList<ItemDetails> image_details = GetSearchResults();
    private int IMAGE_IDS[] = {R.drawable.slide1, R.drawable.slide2, R.drawable.slide3,R.drawable.slide4};  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_menu);
        final ListView lv = (ListView)findViewById(R.id.listView1);
        lv.setAdapter(new MenuAdapter(this,image_details));
        lv.setOnItemClickListener(this);
        actionBar = getActionBar();
        final Handler h = new Handler();
        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setDisplayShowCustomEnabled(true);
        actionBar.setIcon(R.drawable.ic_social_share);
        LayoutInflater inflator = (LayoutInflater) this
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View v = inflator.inflate(R.layout.apptitle, null);
        actionBar.setDisplayShowTitleEnabled(false);
        actionBar.setCustomView(v);
        int delay = 1000;
        int period = 4000;
        t1 = new Timer();
        t1.scheduleAtFixedRate(new TimerTask() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                h.post(new Runnable() {

                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        animateSlideShow();
                    }
                });
            }
        }, delay, period);
    }
    private void animateSlideShow(){
        slide = (ImageView)findViewById(R.id.imagearr);
        slide.setImageResource(IMAGE_IDS[currindex%IMAGE_IDS.length]);
        currindex++;
        Animation fade = AnimationUtils.loadAnimation(this, android.R.anim.fade_in);
        slide.startAnimation(fade);
    }
    private ArrayList<ItemDetails> GetSearchResults(){
        ArrayList<ItemDetails> results = new ArrayList<ItemDetails>();

        ItemDetails item_details = new ItemDetails();
        item_details.setmenuitem("Featured Tours");
        item_details.setItemDescription("Mostly Recommended");
        item_details.setImageNumber(1);
        results.add(item_details);

        item_details = new ItemDetails();
        item_details.setmenuitem("Theme Tours");
        item_details.setItemDescription("Some amazing experiences");
        item_details.setImageNumber(2);
        results.add(item_details);


        item_details = new ItemDetails();
        item_details.setmenuitem("Holiday Packages");
        item_details.setItemDescription("Bundles of happiness");
        item_details.setImageNumber(3);
        results.add(item_details);

        item_details = new ItemDetails();
        item_details.setmenuitem("Tailor Tours");
        item_details.setItemDescription("Custommize your tours");
        item_details.setImageNumber(4);
        results.add(item_details);

        item_details = new ItemDetails();
        item_details.setmenuitem("Events");
        item_details.setItemDescription("Experience the culture");
        item_details.setImageNumber(5);
        results.add(item_details);

        item_details = new ItemDetails();
        item_details.setmenuitem("Enquiry");
        item_details.setItemDescription("Ask your queries");
        item_details.setImageNumber(6);
        results.add(item_details);

        return results;
        }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu, menu);
        SearchView searchView = (SearchView) menu.findItem(R.id.menu_action_search).getActionView();
        return true;
    }
    @Override
    public void onItemClick(AdapterView<?> av, View v, int position, long id) {
        // TODO Auto-generated method stub
        if(position==0){
            Intent i0 = new Intent(this,FeaturedTourActivity.class);
            startActivity(i0);
        }
    else if(position==1){
            Intent i1 = new Intent(this,MainActivity.class);
            startActivity(i1);
        }
        else if(position==2){
            Intent i2 = new Intent(this,TourCatActivity.class);
            startActivity(i2);
        }
        else if(position==3){
            Intent i3 = new Intent(this,TailoredoneActivity.class);
            startActivity(i3);
        }
        else if(position==4){
            Intent i4 = new Intent(this,MainActivity.class);
            startActivity(i4);
        }
        else if(position==5){
            Intent i5 = new Intent(this,EnquireActivity.class);
            startActivity(i5);
        }
        else if(position==6){
            Intent i6 = new Intent(this,MainActivity.class);
            startActivity(i6);
        }
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        switch(item.getItemId()){
            case R.id.menu_action_search:
            {
                Intent intent_search = new Intent(this,MainActivity.class);
                startActivity(intent_search);
                break;
            }
            case R.id.menu_action_locate:
            {
                Intent intent_nearby = new Intent(this,NearbyPlacesActivity.class);
                startActivity(intent_nearby);
                break;
            }
            case R.id.menu_action_mail:
            {
                Intent intent_mail = new Intent(this,EnquireActivity.class);
                startActivity(intent_mail);
                break;
            }
            case R.id.menu_action_call:
            {

                Intent callIntent = new Intent(Intent.ACTION_CALL);
                callIntent.setData(Uri.parse("tel:9560875725"));
                startActivity(callIntent);
                break;
            }
        }
        return super.onOptionsItemSelected(item);
    }

}

Create BaseActivity它实现了action bar。 并且你所有的活动都必须继承BaseActivity (not Activity)


public class BaseActiivity extends Activity{
     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       // action bar implementation
    }

}

public class MainActivity extends BaseAcivity{
    //your code
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在应用程序的所有活动中重用操作栏 的相关文章

  • Nexus One / Android“CPU 可能被固定”错误

    我正在使用 NDK 修订版 4 和 OpenGL ES 2 0 为 Nexus One 编写一款图形密集型游戏 我们真的在这里推动硬件 并且在大多数情况下它运行良好 除了偶尔我会因以下日志消息而严重崩溃 W SharedBufferStac
  • Android GooglePlayServicesUtil.getErrorDialog() 不显示对话框

    我正在尝试检查是否可用Google Play 服务 APK在使用它之前 我有一个 软件包已过期的设备 日志显示 Google Play 服务已过时 需要 3225100 但找到 3136134 下面的代码将处理这种情况并显示一个对话框 提示
  • 使用 Firebase 数据填充 Android spinner

    我在填充时遇到一些问题propertyAddress从我的properties桌子到我的旋转器MaintenanceActivity 问题本身不在于代码 而在于可以使用 Firebase 控制台修改的数据库规则 目前 我的规则是这样的 ru
  • 带图标的 Android 选项菜单

    如何使用选项菜单显示图标 我尝试了以下代码 但我的选项菜单没有图像图标 我正在使用 android 版本 4 0 来开发应用程序 Java代码 public boolean onCreateOptionsMenu Menu menu sup
  • 无法调用类的无参数构造函数。向 Gson 注册此类型的 InstanceCreator 可能会解决此问题

    java lang RuntimeException Unable to invoke no args constructor for class com arch example network models NetworkPagingL
  • 需要在状态改变时关闭MediaRecorder播放的声音

    我已尝试在下面的链接中找到的更改 但没有效果 如何在状态改变时关闭 MediaRecorder 播放的声音 https stackoverflow com questions 6804205 how to shut off the soun
  • 如何将参数传递给Workmanager DoWork方法

    我想安排任务在 24 小时后从数据库中删除 public class WorkManager extends Worker public WorkManager NonNull Context context NonNull WorkerP
  • Android studio 3.0不生成签名的apk

    将 android studio 更新到版本 3 0 Windows 后 我无法生成签名的 APK 构建完成后 我收到消息 单击 查找 会将我带到 APP 文件夹 但找不到 APK 改变了什么 自Android Studio 3 0更新后
  • Android Fabric Crashlytics 崩溃,初始化时未找到资源

    我从 google play 控制台收到了这份报告 看起来 Fabric 在启动时崩溃了 因为某些用户出现了资源未找到的异常 java lang RuntimeException at android app ActivityThread
  • 更新到 3.2.0 后 Gradle 构建失败

    因此 在将 Gradle 插件更新到 3 2 0 并将 gradle wrapper 更新到 4 6 后 我遇到了问题 Android Studio 版本是 3 2 使用 Gradle 版本 即 alpha 11 也没有结果 什么地方出了错
  • 使用协程对任务进行排队

    我最近开始阅读有关协程的内容 我想询问某个场景 考虑一个带有一个按钮的简单屏幕 单击后 它会执行一堆打印语句和一些延迟 其间 到目前为止 我正在使用协程来实现这一目标 现在 我的问题是 如果用户反复向该按钮发送垃圾邮件 是否有一种方法可以将
  • 覆盖乔达一周的第一天?

    是否有可能覆盖乔达弱的第一天sunday 因为 Joda 使用Monday作为一周的第一天 如果有办法的话 谁能解释一下 我在 SOF 中提到了以下主题 乔达时间 一周的第一天 https stackoverflow com questio
  • 依赖于多个模块的 Gradle Android 单元测试

    我正在开发一个具有多个模块的项目 我们正在为应用程序编写 junit 测试用例 并且我们正在使用以下异常 开始试运行 java lang RuntimeException java lang ClassNotFoundException 下
  • Keytool 不要求别名密码

    我正在尝试生成一个密钥库文件来签署我的 React Native Android 应用程序并将其发布到 Play 商店 我正在尝试按照本文档中的描述进行操作 https facebook github io react native doc
  • RecyclerView onClick notificationItemRemoved 不会触发 onBindView

    I use notifyItemRemoved 方法我想更改其他剩余项目 但该方法没有触发onBindView 方法 除了使用notifyDataSetChanged 我想要附带的动画notifyItemRemoved method 如果您
  • 在 Cordova / PhoneGap 中生成 iOS 和 Android 图标

    我有一个新创建的 Cordova 项目 其中包含以下内容config xml设置 使用来自http docs phonegap com en edge config ref images md html http docs phonegap
  • Android 上的 Facebook 社交插件

    我想集成 Facebook 的评论社交插件 https developers facebook com docs reference plugins comments https developers facebook com docs r
  • Android 中应用程序在后台运行时如何显示闪屏?

    我的应用程序有一个启动屏幕 无法避免它 因为这是出于品牌原因 我想屏蔽用户界面并在后台显示启动屏幕 就像银行应用程序那样 我应该覆盖 MainActivity 中视图的 onPause 和 onResume 吗 显现
  • 使用 Ant 构建 Android 库项目

    我在使用 ant 构建 Android 库项目时遇到问题 当我尝试跑步时ant release 它说Target release does not exist in the project MyProject 然后我假设库可能无法通过发布
  • Android动态功能模块,找不到资源

    当下载的功能模块发布到 Play 商店时 我在启动活动时遇到问题 它总是在下载模块活动中的 setContentView 上崩溃 java lang RuntimeException Unable to start activity Com

随机推荐