我有一个界面:
import math
num = int(input("please enter the number you want to check\n"))
if num > 1:
for i in range(2, int(math.sqrt(num))+1):
if (num % i) == 0:
print("the number is not prime")
print(i, "times", num//i, "is", num)
break
else:
print("the number is prime")
else:
print("the number is not prime")
我想从活动A调用它,以便活动B可以收听更改。
这是我到目前为止已经尝试过的方法,但是我遇到了ClassCastException:
public interface ToggleChartListener {
public void onToggleChartChanged(boolean isPie);
}
如何初始化接口?
答案 0 :(得分:0)
由于((ToggleChartListener)getApplicationContext());
而崩溃。您需要将Activity B
的实例转换为ToggleChartListener
,以从onToggleChartChanged()
进一步调用Activity A
。
此外,您为什么要让活动B听这些更改?由于2个活动无法同时显示给用户? (相反,您可以使用startActivityForResult()
)
答案 1 :(得分:0)
通过接口与不同活动进行通信的方法不正确。
因此,您可以按照以下方式进行操作。
您有一个接口ToggleChartListener
。在活动A中,您必须声明接口对象,例如:private ToggleChartListener listener;
,然后必须创建类似这样的方法:
// static because A is an activity you may not b access method from other activity
public static void initCallback(ToggleChartListener listener){
this.listener = listener
}
现在您可以调用接口方法:
listener.onToggleChartChanged(true);
在活动B中,您必须致电:
ActivityA.initCallback(new ToggleChartListener()) // here you get override method onToggleChartChanged to access data
N.B:,但是将值从活动A传递到活动B的简单方法是Intent
如果情况是您在“活动A”中,则在返回“活动A”后将要进入“活动B”,那么您需要结果,然后可以通过在“活动A”中调用onActivityResult
方法来使用startActivityResult
方法