【问题标题】:Executing method every second in Fragment - NULL Value on second run片段中每秒执行一次方法-第二次运行时为空值
【发布时间】:2017-08-10 23:04:24
【问题描述】:

我们从 someID 的 onCreate 方法中获取值。当 onCreateView 方法第一次运行时,一切都很好。但是,在第二次运行时(在 1000 间隔之后),someID 值为 NULL。我们如何确保这个 someID 值是粘性的?请记住,该线程存在于 Fragment 中

@Override
        public void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            someID = getArguments().getString(SOME_ID_KEY);

        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
            View v = inflater.inflate(R.layout.fragment_game, container, false);
            Toast.makeText(getActivity(), someID, Toast.LENGTH_SHORT).show();

            handler.postDelayed(new Runnable() {
                @Override
                public void run() {

                    System.out.print(someID); // works on 1st time but not any other future runs of the 1k interval
                    handler.postDelayed(this, 1000);
                }
            }, 1000);

【问题讨论】:

    标签: java android multithreading android-activity fragment


    【解决方案1】:

    你可以这样做

    private void printId(){
        handler.postDelayed(new Runnable() {
                @Override
                public void run() {
    
                    System.out.print(someID); // works on 1st time but not any other future runs of the 1k interval
                    printId();
                }
            }, 1000);
    }
    

    并在您的 onCreateView 中将所有处理程序代码替换为:

    pirntId();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 2012-07-11
      • 1970-01-01
      • 2018-06-06
      • 1970-01-01
      相关资源
      最近更新 更多