我正在接收来自广播的意图的MyFragment
课程 -
if(intent.getAction().equals(BroadcastHelper.DEPARTURE_TIME)){
Bundle args = intent.getExtras();
if (args != null) {
departure_time = args.getInt("Departure");
Log.d("hi","vehicle viv0" + departure_time);
setDepTime(departure_time);
}
}
else if(intent.getAction().equals(BroadcastHelper.ARRIVAL_TIME)){
Bundle args = intent.getExtras();
if (args != null) {
arrival_time = args.getInt("Arrival");
Log.d("hi","vehicle viv1" + arrival_time);
setArrivalTime(arrival_time);
}
}
}
};
//public method to set the time variable
public void setArrivalTime(int arrival_time){
Log.d("hi","vehicle viv2" + arrival_time);
this.arrival_time = arrival_time;
Log.d("hi","vehicle viv3" + this.arrival_time);
}
//public method to set the time variable
public void setDepTime(int departure_time){
this.departure_time = departure_time;
}
public int getArrivalTime(){
Log.d("hi","vehicle viv5" + this.arrival_time);
return this.arrival_time;
}
public int getDepTime(){
return this.departure_time;
}
我正如上所述设置arrival_time和departure_time的值。现在从MyOwn
上课,我正在做这些 -
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
..........
Button okButton = (Button) rootView.findViewById(R.id.myxml);
okButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyFragment mFragment = new MyFragment();
int depi = mFragment.getDepTime();
}
});
MyFragment mFragment = new StopListFragment();
int arri = mFragment.getArrivalTime();
Log.d("hi","vehicle viv6" + arri);
}
当我使用getArrivalTime()
时,我收到0
。日志是 -
D/hi: vehicle viv1 = 13012
D/hi: vehicle viv2 = 13012
D/hi: vehicle viv3 = 13012
D/hi: vehicle viv5 = 0
D/hi: vehicle viv6 = 0
有什么不对吗?
答案 0 :(得分:0)
你正在片段的一个新实例上调用getDepTime(),它显然没有任何数据,因为你刚刚创建它
答案 1 :(得分:0)
MyFragment mFragment = new MyFragment();
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
..........
Button okButton = (Button) rootView.findViewById(R.id.myxml);
okButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int depi = mFragment.getDepTime();
}
});
int arri = mFragment.getArrivalTime();
Log.d("hi","vehicle viv6" + arri);
}
您在类的不同对象上使用setter和getter。尝试将片段初始化排除到全局值,并查看其工作原理。见上面的例子。
答案 2 :(得分:-1)
自" MyOwn"类创建Fragment的新对象,然后是变量" arrival_time'的默认初始化值。将被退回。