jatamatadada 2017-07-06 07:59 采纳率: 100%
浏览 1886
已采纳

java里两个类调用同一个类,如何传递句柄?

1.背景是这样的:我有一个MainActivity,它会new一个类“Base”。然后它会新建一个SecActivity,但此SecActivity也会用到这个“Base”类,但问题来了,这两个页面的Base类做不到同一个,请问大家有什么好方法解决?

2.示意代码如下:

 public class Base{
        public int Value;
    }

    public class A{
        Base baseHandle = new Base();
        private void foo()
        {
            baseHandle.Value = 10;
            B bHandle = new B();
            bHandle.baseHandle = baseHandle;
        }
    }

    public class B{
        Base baseHandle = new Base();
        private void foo()
        {
            baseHandle.Value = ?;
            //请问如何让Value 等于A中已赋值的10,而不是0;
        }
    }

在C#里这么做貌似没问题,但在java里,或者说是在Android studio里这个做却是行不通,恳请大家指教,谢谢。

-------------更新----
可能问题描述有点脱离本意,其实是这样的:
我一个底层类“myDriver”,里面包含了串口驱动和各式下位机接口方法,还有个定时器。

然后我在MainActivity里把这个myDriver实例化,并已经打开串口了。

然后我startActivity了secActivity,但是这个第二个页面没法调用第一个页面已经实例过的myDriver。

我是想让第二个页面能够操作到第一个页面实例化后的myDriver句柄,求救啊~~~

  • 写回答

8条回答 默认 最新

  • 學诚 2017-07-07 09:00
    关注

    写一个类,实现单例模式。
    public class Base{
    public int Value;
    }
    public class MakeBase{
    private static Base base;
    public static getInstance(){
    if(base == null)
    base = new Base();
    return base;
    }
    }
    public class A{
    Base baseHandle = MakeBase.getInstance();
    private void foo(){
    baseHandle.Value = 10;
    B bHandle = new B();
    bHandle.baseHandle = baseHandle;
    }
    }

    public class B{
    Base baseHandle = MakeBase.getInstance();
    private void foo(){
    baseHandle.Value = ?;
    //请问如何让Value 等于A中已赋值的10,而不是0;
    }
    }

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

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退