获取活动上下文而不实例化它?

时间:2017-02-08 10:51:11

标签: android android-activity

我一直在努力解决这个问题两天,我需要使用ActivityB ActivityA中的方法。获得A i语境的问题在于尝试了许多解决方案,如:

static ActivityA activityA;

onCreate州:

activityA = this;

并添加此方法:

public static ActivityA getInstance(){
   return   activityA;
}

ActivityB,请致电

ActivityA.getInstance().myFunction(); //call myFunction using activityA

它没有成功,因为这需要实例化ActivityA以便将其上下文传递给A但是在我的情况下这是不可能实现的是有没有办法在不切换活动的情况下获取活动的上下文。 我的问题可能变得简单或直观,但对这个概念不熟悉,提前谢谢

4 个答案:

答案 0 :(得分:1)

由于您希望在这两个活动中都有共同功能,因此您可以创建BaseActivity extends Activity ActivityA并在其中定义您的方法,并ActivityBBaseActivity延长public class BaseActivity extends Activity { public void myFunction() { ... } } 1}}然后你可以访问方法。 你可以这样做,

public class ActivityA extends BaseActivity
{
 public void someMethod()
 {
   myFunction();   // you can call function here directly
 }
}

为其他活动做这件事:

int

答案 1 :(得分:0)

您可以使用B类来扩展A类

 $(window).on('scroll resize', function(e) {
        $.each(navlist, function(e, elem) {
            var placement = elem.target[0].getBoundingClientRect();
            if (placement.top < window.innerHeight && placement.bottom > 0) {
                history.pushState({}, '', elem.id);
                console.log('Hash: ' + elem.id);
                if(elem.id == "#second"){
                   $(".phone").css('display', 'none');
                }else{
                   $(".phone").css('display', 'block');
              }
            return false; /* Exit $.each loop */
            };

        });
 });

在onCreate状态:

public static ActivityA activityA;

Outside Oncreate

{
activityA = this;
}

并在ActivityB中调用

public myFunction{
}

答案 2 :(得分:0)

在这里,我创建了两个类作为活动,然后在类methodA()中创建了一个公共Activity_A,然后创建了类Activity_B并创建了methodB(),并创建了对象通过传递活动Activity_A的上下文来methodA()并调用Activity_B

        class Activity_A{
            public void methodA(Context context){
                Toast.makeText(context,"methodA",Toast.LENGTH_LONG).show();
            }
        }

        class Activity_B{
            public void methodB(){
                Activity_A activity_a = new Activity_A();
                activity_a.methodA(Activity_B.this);
            }
        }

答案 3 :(得分:0)

有两种选择:

1)将static关键字添加到共享方法

OR

2)你可以尝试反思。

供参考,请点击以下链接: What is reflection and why is it useful?