如何初始化自定义界面

时间:2019-06-12 09:25:30

标签: java android interface

我有一个界面:

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);
}

如何初始化接口?

2 个答案:

答案 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方法