我一直在努力解决这个问题两天,我需要使用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但是在我的情况下这是不可能实现的是有没有办法在不切换活动的情况下获取活动的上下文。
我的问题可能变得简单或直观,但对这个概念不熟悉,提前谢谢
答案 0 :(得分:1)
由于您希望在这两个活动中都有共同功能,因此您可以创建BaseActivity
extends Activity
ActivityA
并在其中定义您的方法,并ActivityB
和BaseActivity
延长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)