[問題] 呼叫fragment前的錯誤

看板AndroidDev作者 (狄樂)時間10年前 (2015/09/13 21:10), 10年前編輯推噓0(007)
留言7則, 3人參與, 最新討論串1/1
各位前輩大家好 小弟練習開發app中 UI架構為MainActivity→GameActivity→GameFragment(在這做資料的統計) (設定一個Button按下後出現) ↓ →StatictiscFragment(統計的結果顯示在這) 問題出在還沒按下顯示的Button前任何需要調用到StatictiscFragment元件變數的動作都 會造成程序崩潰,我實在找不出問題出在哪裡... public TextView mcounttime; mcounttime = (TextView) getActivity().findViewById(R.id.txt_time); private View.OnClickListener btnSTARTOnClick = new View.OnClickListener() { @Override public void onClick(View v) { yournum = "";//將答題緩存值設為空值 check = true;//將啟動代碼設為true fincode = ran.nextInt(100) + 1;//隨機初始化正確值 min = "1";//將最小緩存值設為1 max = "100";//將最大緩存值設為100 mtxtmin.setText(R.string.min_1); mtxtmax.setText(R.string.max_100); mtxtyour.setText(R.string.empty); mtxtres.setText(R.string.btn_start); icounttime++; mcounttime.setText(String.valueOf(icounttime)); } }; 以上紅字部分的mcounttime就是StatictiscFragment的元件變數 ---------------補充StatictiscFragment的部分--------------- import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; /** * A simple {@link Fragment} subclass. */ public class StatisticsFragment extends Fragment { public StatisticsFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_statistics, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); } @Override public void onResume() { // TODO Auto-generated method stub super.onResume(); GameFragment gamefrag = (GameFragment) getFragmentManager().findFragmentById(R.id.game); gamefrag.mcounttime = (TextView) getActivity().findViewById(R.id.txt_time); gamefrag.mcountguess = (TextView) getActivity().findViewById(R.id.txt_guesstime); //gamefrag.mcountbingo = (TextView) getActivity().findViewById(R.id.txt_bingotime); //gamefrag.mcountpercent = (TextView) getActivity().findViewById(R.id.txt_percent); } } -- 聽別人說施比受更有福 我倒認為吃比瘦更有福 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.231.61.44 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1442149856.A.F6B.html ※ 編輯: gndelo (61.231.61.44), 09/13/2015 21:12:26

09/13 22:32, , 1F
09/13 22:32, 1F
king大 我並不是抓不到StatictiscFragment的元件 而是在GameFragment設一個Button使用add方法將StatictiscFragment加入主畫面 但在按下那個Button前使用到StatictiscFragment的元件變數似乎會回傳null 但如果一開始先按下Button呼叫過的話就一切正常

09/13 23:12, , 2F
錯誤訊息?StatictiscFragment一開始有先建立嗎?
09/13 23:12, 2F
如上補充

09/14 07:46, , 3F
一般的做法應該是把資料帶入fragment做初始化吧
09/14 07:46, 3F
可是我的目的是要在GameFragment裡的動作能夠先統計再交由StatictiscFragment顯示 ※ 編輯: gndelo (1.171.240.247), 09/15/2015 19:23:20

09/15 21:09, , 4F
http://goo.gl/qVzIp 參考官方怎麼使用 newInstance()
09/15 21:09, 4F

09/15 21:09, , 5F
動態產生可以帶資料的 Fragment
09/15 21:09, 5F

09/15 21:15, , 6F
會有 null 大概是還沒用 FragmentTransaction.add()
09/15 21:15, 6F

09/15 21:16, , 7F
StatictiscFragment 不會跑到 onCreateView()
09/15 21:16, 7F
感謝 雖然還沒完全看懂newInstance的用法 突然發現把setText的部分放進StatictiscFragment就解決了... ※ 編輯: gndelo (39.9.226.166), 09/18/2015 20:32:49
文章代碼(AID): #1LzNNWzh (AndroidDev)