2017-09-05 5 views
-1

からアンドロイドの基本を取り上げました。私はlistview(ファイルレイアウトeachrow.XMLファイルに格納されている)と、ユーザーがボタン "schoollife"をクリックすると、リストビューは自動的に他のファイル "eachrow2.XML"から格納されたレイアウトをインポートするように、 。
eachrow.xmlのレイアウトはボタンのみで構成され、各row2.xmlのレイアウトはボタンで構成されています。
ボタンがクリックされると、他のレイアウトがインポートされますが、ユーザーがの2番目のレイアウトからボタンをクリックしようとすると問題が発生します。エラーログには、ボタン '対象' は、nullポインタ例外を引き起こしていることを述べてボタンをクリックして、レイアウトファイル

eachrow.xml: enter image description here

eachrow2.xml:enter image description here

====== =====コード========
eachrow2.xml

?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal"> 

     <Button 
      android:id="@+id/subjectbutton" 

      android:layout_width="wrap_content" 
      android:layout_height="100dp" 
      android:padding="1dp" 
      android:layout_margin="1dp" 

      android:textAllCaps="false" 
      android:background="@color/colorPrimary" 
      android:textColor="@color/white" 
      /> 
     <TextView 
      android:id="@+id/marksbox" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 

      android:textSize="20dp" 
      android:text="click the button to show marks of each subject" 
      android:textAlignment="center" 

    /> 


</LinearLayout> 

mainactivity.java:0 package com.example.ansh.reportcard;あなたの質問に対する私の理解によると

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 
import android.widget.TextView; 

import java.util.HashMap; 

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 
    private ListView l; 
    private String[] d_myself; 
    private ArrayAdapter adp; 
    private HashMap<String,String> d_school; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     l=(ListView)findViewById(R.id.a_list); 
     d_myself= new String[]{"something" 
     }; 
     d_school=new HashMap<>(); 
     d_school.put("A","B"); 



     Button B_myself= (Button)findViewById(R.id.myself); 
     B_myself.setOnClickListener(this); 


     Button B_school=(Button)findViewById(R.id.school); 
     B_school.setOnClickListener(this); 

     Button subject=(Button)findViewById(R.id.subjectbutton); 
     subject.setOnClickListener(this); 


    } 


    @Override 
    public void onClick(View view) { 
     if(view.getId()==R.id.myself){ 
      adp=new ArrayAdapter(MainActivity.this,R.layout.eachrow,R.id.textView,d_myself); 
      l.setAdapter(adp); 
     } 
     if (view.getId()==R.id.school){ 
      adp=new ArrayAdapter(MainActivity.this,R.layout.eachrow2,R.id.subjectbutton,d_school.keySet().toArray()); 
      l.setAdapter(adp); 
     } 
     if (view.getId()==R.id.subjectbutton){ 
      Button tmp=(Button)view; 
      CharSequence x=tmp.getText(); 

      TextView t= (TextView) findViewById(R.id.marksbox); 
      t.setText(d_school.get(x.toString())); 

     } 


    } 
} 
+0

エラーログを追加してください – Manifest

+0

私は他の何ものよりも質問および/またはエラーにより混乱します。 –

答えて

0

、あなたが代わりにあなたがeachrow2.xmlファイルからそれを見つける必要があり、XMLファイルactivity_main.xmlからボタンを宣言する。

subjectbuttonはeachrow2.xmlにありますので、activity_main.xmlの代わりにこのファイルからビューを探す必要があります。

関連する問題