[問題] Fragment中的findViewByid問題

看板AndroidDev作者 (Solinari)時間8年前 (2015/11/01 14:00), 8年前編輯推噓6(6014)
留言20則, 4人參與, 最新討論串1/1
我在http://developer.android.com/training/basics/fragments/communicating.html 下載了範例練習,直接執行與測試是正常的 在來我想試試從一般的activity按一個button後 出現範例的頁面 mfrag是原本範例中的mainactivity 程式碼: MainActivity import android.app.Activity; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button main_button = (Button)findViewById(R.id.button); main_button.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(MainActivity.this, mfrag.class); startActivity(intent); } }); } } 我按下button後,畫面出現正常,但只要點下Article one或ArticleTwo 就會出現 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference 我檢查了一下 發現getActivity().findViewById(R.id.article) 為 null 直接這樣start是不行的嗎? 昨天 搞了一整天 實在是無法解決 請板上高手指導一下 感恩 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.105.209.155 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1446357629.A.322.html ※ 編輯: Palanthas (112.105.209.155), 11/01/2015 14:09:20

11/01 14:40, , 1F
看不懂...你的程式碼沒完整吧
11/01 14:40, 1F

11/01 14:40, , 2F
還有程式碼請找個有網站貼,別直接貼在這
11/01 14:40, 2F

11/01 14:41, , 3F
11/01 14:41, 3F

11/01 14:48, , 4F
11/01 14:48, 4F

11/01 14:54, , 5F
11/01 14:54, 5F

11/01 15:07, , 6F
稍微看了一下 R.id.article這個view是inflate在fragemet
11/01 15:07, 6F

11/01 15:10, , 7F
在fragement裡面 view.findViewById應該就可以了吧?
11/01 15:10, 7F

11/01 15:16, , 8F
我修改ArtcleFragment 改成view.FindViewByid直接紅字
11/01 15:16, 8F

11/01 15:32, , 9F
試試看看 getView().findViewById(.....)
11/01 15:32, 9F

11/01 15:38, , 10F
錯誤訊息一樣
11/01 15:38, 10F

11/01 15:39, , 11F
NullPointerException findViewById一樣為NULL
11/01 15:39, 11F

11/01 16:40, , 12F
你的那個 Fragment 沒有 Layout 所以會是 null
11/01 16:40, 12F

11/01 16:44, , 13F
請問那為甚麼我直接以MFRG當MAINACTIVITY 時不會出錯
11/01 16:44, 13F

11/01 16:44, , 14F
呢?
11/01 16:44, 14F

11/01 16:54, , 15F
不知道 不過我覺得你可以改成在 inflate 的時候
11/01 16:54, 15F

11/01 16:54, , 16F
就先用 findViewById 取得那個物件
11/01 16:54, 16F

11/01 16:59, , 17F
11/01 16:59, 17F

11/01 16:59, , 18F
我是都這樣用的
11/01 16:59, 18F

11/01 17:04, , 19F
謝謝kiwatami大大 我在article_view中加上LinearLayou
11/01 17:04, 19F

11/01 17:05, , 20F
t 就成功了 您的貼的方法我會研究看看
11/01 17:05, 20F
文章代碼(AID): #1MDQfzCY (AndroidDev)