设置并获取方法无法正常工作

时间:2016-06-28 13:37:13

标签: java android

我正在接收来自广播的意图的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

有什么不对吗?

3 个答案:

答案 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'的默认初始化值。将被退回。