Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 按钮从布局文件单击_Android_Xml_Listview - Fatal编程技术网

Android 按钮从布局文件单击

Android 按钮从布局文件单击,android,xml,listview,Android,Xml,Listview,所以当我偶然发现这一点时,我正在研究android的一些基础知识。我试图在我的应用程序上实现一个listview(其布局存储在eachrow.XML文件中)和一个按钮,这样当用户单击一个按钮“schoollife”时,listview会自动导入从另一个文件“eachrow2.XML”存储的布局。 eachrow.xml的布局仅包含按钮,而eachrow2.xml的布局包含按钮。 一切似乎都很正常,用户单击按钮会导入其他布局,但当用户尝试从第二个布局单击按钮时,问题就开始了。在错误日志中,说明按钮

所以当我偶然发现这一点时,我正在研究android的一些基础知识。我试图在我的应用程序上实现一个listview(其布局存储在eachrow.XML文件中)和一个按钮,这样当用户单击一个按钮“schoollife”时,listview会自动导入从另一个文件“eachrow2.XML”存储的布局。
eachrow.xml的布局仅包含按钮,而eachrow2.xml的布局包含按钮。
一切似乎都很正常,用户单击按钮会导入其他布局,但当用户尝试从第二个布局单击按钮时,问题就开始了。在错误日志中,说明按钮“subject”导致空指针异常

eachrow.xml:

eachrow2.xml:

=============代码==============
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>
?xml version=“1.0”encoding=“utf-8”>
mainactivity.java:
包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()));

        }


    }
}
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.view.view;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.ListView;
导入android.widget.TextView;
导入java.util.HashMap;
公共类MainActivity扩展AppCompatActivity实现View.OnClickListener{
私有列表视图l;
私人字符串[]d_本人;
私人阵列适配器adp;
私立哈什马杜学校;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
l=(ListView)findViewById(R.id.a_列表);
d_imf=新字符串[]{“某物”
};
d_school=新HashMap();
d_school.put(“A”、“B”);
按钮B_Illy=(按钮)findViewById(R.id.Illy);
B_我自己。setOnClickListener(这个);
按钮B_school=(按钮)findViewById(R.id.school);
B_school.setOnClickListener(本);
按钮主题=(按钮)findViewById(R.id.subjectbutton);
subject.setOnClickListener(this);
}
@凌驾
公共void onClick(视图){
if(view.getId()==R.id.imf){
adp=新阵列适配器(MainActivity.this,R.layout.eachrow,R.id.textView,d_本人);
l、 setAdapter(adp);
}
if(view.getId()==R.id.school){
adp=新阵列适配器(MainActivity.this,R.layout.eachrow2,R.id.subjectbutton,d_school.keySet().toArray());
l、 setAdapter(adp);
}
if(view.getId()==R.id.subjectbutton){
按钮tmp=(按钮)视图;
CharSequence x=tmp.getText();
TextView t=(TextView)findViewById(R.id.marksbox);
t、 setText(d_school.get(x.toString());
}
}
}

根据我对您问题的理解,您可以从xml文件activity_main.xml中声明按钮,而应该从eachrow2.xml文件中找到它


subjectbutton位于eachrow2.xml中,因此您只需要从该文件中查找视图,而不需要从activity_main.xml中查找视图

请添加错误登录,因为问题和/或错误比其他任何东西更让人困惑。