Java 片段类中的错误

Java 片段类中的错误,java,android,eclipse,class,android-fragments,Java,Android,Eclipse,Class,Android Fragments,所以我正在转换我的应用程序,在大量的研究之后,我决定将我的活动转换成片段。这是一个成功,但现在更难的是,实现从我的活动到片段的代码。所以我使用了getView()。和getActivity()。解决问题,一切都很好。正如你在下面看到的 public class HomeFragment extends Fragment { public static HomeFragment newInstance(String title) { HomeFragment homeFra

所以我正在转换我的应用程序,在大量的研究之后,我决定将我的活动转换成片段。这是一个成功,但现在更难的是,实现从我的活动到片段的代码。所以我使用了getView()。和getActivity()。解决问题,一切都很好。正如你在下面看到的

public class HomeFragment extends Fragment {  

  public static HomeFragment newInstance(String title) {

      HomeFragment homeFragment = new HomeFragment();
      Bundle bundle = new Bundle();
      bundle.putString("title", title);
      homeFragment.setArguments(bundle);
      return homeFragment;
  }

  @Override  
  public void onCreate(Bundle savedInstanceState) {  
      super.onCreate(savedInstanceState);  
  }  

  @Override  
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {          
      View view = inflater.inflate(R.layout.fragment_activity_home, container, false);  

        // Time function - Displays timeview on Card
        final boolean keepRunning = true;
        Thread thread = new Thread(){
            @Override
            public void run(){

                while(keepRunning){

                    // Make the thread wait half a second (if you're only showing time up to seconds, it doesn't need to be updating constantly)
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        Toast.makeText(getActivity().getApplicationContext(), "Default Signature Fail", Toast.LENGTH_LONG).show();
                        e.printStackTrace();
                    }

                    getActivity().runOnUiThread(new Runnable(){
                        @Override
                        public void run(){
                            TextView time = (TextView) getView().findViewById(R.id.time);
                            time.setText(DateUtils.formatDateTime(getActivity().getBaseContext(), System.currentTimeMillis(),DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_12HOUR));
                        }
                    });
                }
            }
        };

        thread.start();

        // Date function - Displays dateview on Card
        final boolean keepRunning1 = true;
        Thread thread_two = new Thread(){
            @Override
            public void run(){

                while(keepRunning1){

                    // Make the thread wait half a second. If you want...
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        Toast.makeText(getActivity().getApplicationContext(), "Default Signature Fail", Toast.LENGTH_LONG).show();
                        e.printStackTrace();
                    }

                    getActivity().runOnUiThread(new Runnable(){
                        @Override
                        public void run(){
                            TextView date = (TextView) getView().findViewById(R.id.date);
                            date.setText(DateUtils.formatDateTime(getActivity().getBaseContext(), System.currentTimeMillis(),DateUtils.FORMAT_SHOW_WEEKDAY | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR));
                        }
                    });
                }
            }
        };

        thread_two.start();
      return view;  
    }  
} 
运行应用程序时,它会显示应用程序约2秒钟,然后强制关闭,因此我检查了日志中是否有任何错误。这就出现了--

我是一个新手,我有更多的活动经验,所以我不知道这里有什么问题。所以我查了54行,就是这一行--

但是我没有看到任何问题或错误?我有什么遗漏吗? 谢谢你阅读这篇文章

改变这个

TextView time = (TextView) getView().findViewById(R.id.time);

最后一次

final View view;
同样地

TextView date = (TextView) view.findViewById(R.id.date);
试试这个

改变这个

TextView time = (TextView) getView().findViewById(R.id.time);
time.setText(DateUtils.formatDateTime(getActivity().getBaseContext(), System.currentTimeMillis(),DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_12HOUR));

而且

TextView date = (TextView) view.findViewById(R.id.date);
date.setText(""+DateUtils.formatDateTime(getActivity().getBaseContext(), System.currentTimeMillis(),DateUtils.FORMAT_SHOW_WEEKDAY | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR));

您正在使用线程创建交易?@Robin
getView()
返回null。您可以使用
getView()
在activitycreated上初始化视图。您需要等待片段连接到activity@Robin首先确定时间,然后再次运行,查看是否获得NPE@date。我想你会的。还可以使用线程的处理程序isntead来创建延迟
TextView date = (TextView) view.findViewById(R.id.date);
TextView time = (TextView) getView().findViewById(R.id.time);
time.setText(DateUtils.formatDateTime(getActivity().getBaseContext(), System.currentTimeMillis(),DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_12HOUR));
TextView time = (TextView) view.findViewById(R.id.time);
time.setText(""+DateUtils.formatDateTime(getActivity().getBaseContext(), System.currentTimeMillis(),DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_12HOUR));
TextView date = (TextView) view.findViewById(R.id.date);
date.setText(""+DateUtils.formatDateTime(getActivity().getBaseContext(), System.currentTimeMillis(),DateUtils.FORMAT_SHOW_WEEKDAY | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR));