Androidレイアウトファイル使用<br>ラベルにNullPointerExceptionの問題が発生

3230 ワード

問題が発生
レイアウトファイルにラベルを使うのはよく知られていないに違いありません.冗長なコードを減らすことができます.以前はプロジェクトでも使っていましたが、一度使ったときに直接Null PointerExceptionの問題が出てきました.次は問題のコードです
Activityのコード
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    TextView textView = (TextView) findViewById(R.id.text_include);

    RelativeLayout rl_include = (RelativeLayout) findViewById(R.id.rl_layout);
    rl_include.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this, "text", Toast.LENGTH_SHORT).show();
        }
    });

}

activity_main.xml


        
    
        


layout_inclue.xml


    



まちがったところ
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.RelativeLayout.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
layout_を設定していますinclueレイアウトでレイアウトクリックイベントに対して空のポインタの問題が発生し、最後にactivity_であることが判明した.main.xmlのラベルのidがlayoutを上書きしましたinclue.xmlのルートレイアウトのidは、Activityでlayout_を取得します.inclue.xmlルートレイアウトはnullです.
2つの解決策を提供
1.activity_を削除するmain.xmlのラベルのid、プログラムは正常に運行することができます
2.activity_を使うmain.xmlのラベルのid
 RelativeLayout rl_include = (RelativeLayout) findViewById(R.id.include);
    rl_include.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this, "text", Toast.LENGTH_SHORT).show();
        }
    });

関連リンク
Android Layout nullpointerException
これは私が最初のブログで、プログラマーとして、技術ブログを書くことの重要性をよく知っていて、これからもブログの中で出会った問題を記録して、新しい技術の枠組みを学ぶ心得があります.自分の技術も少しずつ成長して積み重ねていきたい.私は私の技术もそんなに深くないことを知っていて、书くのが间违っている地方、みんなによけいに指导してもらいます.