我正在MyFragment类的广播接收器中获取值,该值将接口DelayTime扩展为-

 if(intent.getAction().equals(BroadcastHelper.DEPARTURE_TIME)){
            Bundle args = intent.getExtras();
            if (args != null) {
                int departure_time = args.getInt("Departure");
                DepartureTime(departure_time);
                }
        }
        else if(intent.getAction().equals(BroadcastHelper.ARRIVAL_TIME)){
            Bundle args = intent.getExtras();
            if (args != null) {
                int arrival_time = args.getInt("Arrival");
                ArrivalTime(arrival_time);
            }
        }

       @Override
public int ArrivalTime(int arrival_time){
 //what to do here
 Log.d("hi","arrival_time" + arrival_time);
    return arrival_time;
}

@Override
public int DepartureTime(int departure_time){
//what to do here
    return departure_time;
}


我有一个界面DelayTime-

public interface DelayTime {
    public int ArrivalTime(int arrival_time);
    public int DepartureTime(int departure_time);
}


我需要使用该接口从MyOwn Class中的MyFragment类获取值。在MyOwn类中,我完成的实现类似于-

DelayTime delaytime = new MyFragment();
   int arri = delaytime.ArrivalTime(arr);
   Log.d("hi","arrival 0" + arri);
   myAdapter.setArrTime(arri); //Null pointer here


arri的值为0。日志类似于-

arrival_time 4500
arrival_time 0

最佳答案

对于标准,您的接口DelayTime应该如下所示:

public interface Delayer {
    void setArrivalTime(int arrivalTime);
    void setDepartureTime(int departureTime);
}


在实例化MyOwn类时,应在其构造函数中传递MyFragment并保存对其的引用。

MyOwn mClass = new MyOwn((DelayTime) mFragment);


在MyOwn类中,构造函数应类似于:

public MyOwn(DelayTime fragmentInterface) {
    this.fragmentInterface = fragmentInterface;
}


让MyOwn类使用接口方法:

public void setArrivalTime(int arrivalTime) {
    fragmentInterface.setArrivalTime(arrivalTime);
}


并将接口与MyOwn对象一起使用,如下所示:

mClass.setArrivalTime(yourValue);


还要注意,片段是与(支持)片段管理器一起使用的,并非像这样直接实例化。
我建议您在这里阅读:https://developer.android.com/guide/components/fragments.html

关于java - android如何从界面获取值(value),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38072126/

10-08 21:58