我正在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/