作者Palanthas (Solinari)
看板AndroidDev
標題[問題] Fragment中的findViewByid問題
時間Sun Nov 1 14:00:24 2015
我在
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
推 abccbaandy: 看不懂...你的程式碼沒完整吧 11/01 14:40
→ abccbaandy: 還有程式碼請找個有網站貼,別直接貼在這 11/01 14:40
推 THKLuga: 稍微看了一下 R.id.article這個view是inflate在fragemet 11/01 15:07
推 THKLuga: 在fragement裡面 view.findViewById應該就可以了吧? 11/01 15:10
→ Palanthas: 我修改ArtcleFragment 改成view.FindViewByid直接紅字 11/01 15:16
推 THKLuga: 試試看看 getView().findViewById(.....) 11/01 15:32
→ Palanthas: 錯誤訊息一樣 11/01 15:38
→ Palanthas: NullPointerException findViewById一樣為NULL 11/01 15:39
推 kiwatami: 你的那個 Fragment 沒有 Layout 所以會是 null 11/01 16:40
→ Palanthas: 請問那為甚麼我直接以MFRG當MAINACTIVITY 時不會出錯 11/01 16:44
→ Palanthas: 呢? 11/01 16:44
推 kiwatami: 不知道 不過我覺得你可以改成在 inflate 的時候 11/01 16:54
→ kiwatami: 就先用 findViewById 取得那個物件 11/01 16:54
→ kiwatami: 我是都這樣用的 11/01 16:59
→ Palanthas: 謝謝kiwatami大大 我在article_view中加上LinearLayou 11/01 17:04
→ Palanthas: t 就成功了 您的貼的方法我會研究看看 11/01 17:05