2014-12-05 51 views
0

我知道很多人已經回答了這個問題,但我仍然無法讓我的工作。在StartWorkout類中,我從計時器獲取數據,由於該數據以毫秒爲單位,因此我使用了一種名爲showElapsedtime()的方法。將這些毫秒轉換爲秒,分鐘和小時。我想將這些數據傳遞給另一個名爲workouts的類,但由於某種原因,它不工作。我沒有收到任何數據,因爲我得到了一個N​​UllPOINTEREXECPTION在Android中的片段之間傳遞數據

這是我的代碼。

StartWorkout類

package com.example.d_jara.apprunners; 

    public class StartWorkout extends Fragment{ 


    Button button; 
    Button button2; 
    Chronometer mChronometer; 
    private int hours = 0; 
    private int minutes = 0; 
    private int seconds=0; 



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




     mChronometer = (Chronometer) rootView.findViewById(R.id.chronometer); 
     // mChronometer.setFormat("H:MM:SS"); 
     button = (Button) rootView.findViewById(R.id.mystart); 
     button.setOnClickListener(mStartListener); 
     mChronometer.setTextSize(70); 





     button2 = (Button) rootView.findViewById(R.id.finishWork); 
     //button2.setOnClickListener(mFinishListener); 
     //finish workout button 
     rootView.findViewById(R.id.finishWork).setVisibility(rootView.GONE); 




     //test code here 


     button2.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 


       mChronometer.stop(); 
       button.setVisibility(v.VISIBLE); 
       button2.setVisibility(v.GONE); 
       Toast toast = Toast.makeText(getActivity().getBaseContext(),"Your workout was saved", Toast.LENGTH_LONG); 
       toast.show(); 
       toast.setGravity(Gravity.CENTER|Gravity.CENTER, 0, 0); 
       showElapsedTime(); 

       int c= 9; 
       Bundle args = new Bundle(); 
       Fragment newFragment = new workOuts(); 
       //number of calories 
       args.putInt("hours",hours); 
       args.putInt("seconds",seconds); 
       args.putInt("hours",hours); 
       newFragment.setArguments(args); 


      } 
     }); 







     return rootView; 
    } 


     View.OnClickListener mStartListener = new View.OnClickListener() { 
     public void onClick(View v) { 
      mChronometer.setBase(SystemClock.elapsedRealtime()-0); 
      mChronometer.start(); 
      button.setVisibility(v.GONE); 
      button2.setVisibility(v.VISIBLE); 


     } 
    }; 





    private void showElapsedTime() { 
     long elapsedMillis = SystemClock.elapsedRealtime() - mChronometer.getBase(); 

     hours = (int) (elapsedMillis/3600000); 
     minutes = (int) (elapsedMillis - hours * 3600000)/60000; 
     seconds = (int) (elapsedMillis - hours * 3600000 - minutes * 60000)/1000; 






     } 



} 

這裏是我的訓練類

 public class workOuts extends Fragment { 




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






      int myseconds = getArguments().getInt("seconds"); 
      int myhours = getArguments().getInt("hours"); 
      int myminutes = getArguments().getInt("minutes"); 


      String se=String.valueOf(myseconds); 
      String minu=String.valueOf(myminutes); 
      String hours=String.valueOf(myhours); 


      TextView sec1 = (TextView) rootView.findViewById(R.id.seconds); 
      TextView minute1 = (TextView) rootView.findViewById(R.id.minutes); 
      TextView hours1 = (TextView) rootView.findViewById(R.id.minutes); 

      sec1.setText(se); 
      minute1.setText(minu); 
     hours1.setText(hours); 













     return rootView; 
    } 


} 
+0

你還沒有使用片段經理和片段橫斷 – Barun 2014-12-05 18:36:58

+0

你不啓動任何片段,只設置數據到它 – 2014-12-05 18:37:06

回答

2
Bundle args = new Bundle(); 
      Fragment newFragment = new workOuts(); 
      //number of calories 
      args.putInt("hours",hours); 
      args.putInt("seconds",seconds); 
      args.putInt("hours",hours); 
      newFragment.setArguments(args); 
FragmentTransaction ft = getFragmentManager().beginTransaction(); 
ft.add(yourcontainerid, newFragment, "workout"); 
ft.commit(); 
+0

我在哪裏可以找到容器ID?我一直在使用R.id.Container,但不起作用。它顯示startworkout片段上的文本,而不是鍛鍊片段 – danilojara123 2014-12-05 19:41:13

+0

getFragmentManager()應該是getChildFragmentManager() – cYrixmorten 2014-12-05 19:48:14

+0

@ danilojara123應該是R.layout.lay_startworkout中佈局上的一個id。例如可以是LinearLayout或RelativeLayout。佈局確定片段添加的空間,可以是lay_startworkout.xml的根佈局,以使其看起來替換當前片段。 – cYrixmorten 2014-12-05 19:52:13

相關問題