Java 单击按钮时未显示视图?

Java 单击按钮时未显示视图?,java,android,xml,android-layout,Java,Android,Xml,Android Layout,好了,我已经用了6个小时了,不知什么原因,我就是不明白 我正在尝试制作一个应用程序,用一个特定的公式计算一些东西 现在把它当作一个平均点计算的东西。我有一个按钮,它应该允许用户向布局中添加两个以上的微调器,从而进一步进行操作。现在我为这个目的制定了一个方法。当我第一次调用此方法时,会添加微调器。但第二次就不行了。 如果我把它放在button onClick()方法中,它也不起作用。我已经浏览了网上和stackoverflow上的多个例子,也许我犯了一些愚蠢的错误。请引导我通过这个 代码如下:-

好了,我已经用了6个小时了,不知什么原因,我就是不明白

我正在尝试制作一个应用程序,用一个特定的公式计算一些东西

现在把它当作一个平均点计算的东西。我有一个按钮,它应该允许用户向布局中添加两个以上的微调器,从而进一步进行操作。现在我为这个目的制定了一个方法。当我第一次调用此方法时,会添加微调器。但第二次就不行了。 如果我把它放在button onClick()方法中,它也不起作用。我已经浏览了网上和stackoverflow上的多个例子,也许我犯了一些愚蠢的错误。请引导我通过这个

代码如下:-

SGPA级

public class SGPA extends AppCompatActivity {
    View v;
    Context c;
    LinearLayout subjectData;
    ArrayList<Integer> creditIds;
    ArrayList<Integer> gradeIds;
    ArrayList<String> credits;
    ArrayList<String> grades;
    ArrayList<Integer> gradePoints;
    //int id = View.generateViewId();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sgpa);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        credits=new ArrayList<>();
        grades=new ArrayList<>();
        gradePoints=new ArrayList<>();
        //TODO if 2015 or 2013 regulations
        //assuming 2015
        fill2015();
        LayoutInflater inflater = (LayoutInflater) 
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = inflater.inflate(R.layout.activity_sgpa, null);
        subjectData=(LinearLayout)v.findViewById(R.id.subjectdata);
        c = this;
        creditIds=new ArrayList<>();
        gradeIds=new ArrayList<>();
        Button button2=(Button)findViewById(R.id.button2);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                addViewForAnotherSubject();
                setContentView(v);
            }
        });
        setContentView(v);
    }
    void addViewForAnotherSubject()
    {
        LinearLayout.LayoutParams lp = new 
LinearLayout.LayoutParams(LinearLayout
                .LayoutParams.MATCH_PARENT, 
LinearLayout.LayoutParams.MATCH_PARENT);
        LinearLayout l=new LinearLayout(c);
        l.setOrientation(LinearLayout.HORIZONTAL);
        l.setLayoutParams(lp);
        l.setGravity(Gravity.CENTER_HORIZONTAL);
        Spinner creditspinner=new Spinner(c);
        Spinner gradespinner=new Spinner(c);
        ArrayAdapter<String> creditSpinnerArrayAdapter = new ArrayAdapter<>
(this,
                android.R.layout.simple_spinner_dropdown_item, credits);
        creditspinner.setAdapter(creditSpinnerArrayAdapter);
        ArrayAdapter<String> gradeSpinnerArrayAdapter = new ArrayAdapter<>
(this,
                android.R.layout.simple_spinner_dropdown_item, grades);
        gradespinner.setAdapter(gradeSpinnerArrayAdapter);
        l.addView(creditspinner);
        l.addView(gradespinner);
        subjectData.addView(l);
    }
    void fill2015()
    {
        grades.add("O");        grades.add("A+");
        grades.add("A");        grades.add("B+");
        grades.add("B");        grades.add("C");
        grades.add("P");        grades.add("F");
        grades.add("Ab");        grades.add("I");
        gradePoints.add(10);        gradePoints.add(9);
        gradePoints.add(8);        gradePoints.add(7);
        gradePoints.add(6);        gradePoints.add(5);
        gradePoints.add(4);        gradePoints.add(0);
        gradePoints.add(0);        gradePoints.add(0);
        for(int i=1;i<=10;i++)
            credits.add(""+i);
    }
    void fill2013()
    {

    }
}
公共类SGPA扩展了AppCompative活动{
观点五;
上下文c;
线性布局主题数据;
ArrayList CreditID;
arraylistgradeid;
ArrayList学分;
ArrayList等级;
ArrayList评分点;
//int id=View.generateView();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sgpa);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
设置支持操作栏(工具栏);
credits=新的ArrayList();
等级=新的ArrayList();
gradePoints=newarraylist();
//2015年或2013年法规的待办事项
//假设2015年
fill2015();
LayoutInflater充气机=(LayoutInflater)
getSystemService(上下文布局\充气机\服务);
v=充气机充气(R.layout.activity_sgpa,空);
subjectData=(LinearLayout)v.findViewById(R.id.subjectData);
c=这个;
creditIds=newarraylist();
gradeId=新的ArrayList();
Button button2=(按钮)findViewById(R.id.button2);
button2.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
addViewForAnotherSubject();
setContentView(v);
}
});
setContentView(v);
}
void addviewforothersubject()
{
LinearLayout.LayoutParams lp=新建
LinearLayout.LayoutParams(LinearLayout
.LayoutParams.MATCH_父级,
LinearLayout.LayoutParams.MATCH_PARENT);
线性布局l=新的线性布局(c);
l、 设置方向(线性布局。水平);
l、 setLayoutParams(lp);
l、 设置重力(重心水平);
微调器creditspinner=新微调器(c);
微调器等级微调器=新微调器(c);
ArrayAdapter CreditSpinNearrayAdapter=新的ArrayAdapter
(本,
android.R.layout.simple_微调器_下拉列表_项目,学分);
setAdapter(CreditSpinNearrayaAdapter);
ArrayAdapter Grade SpinNearrayAdapter=新的ArrayAdapter
(本,
android.R.layout.simple_微调器_下拉列表_项目,等级);
gradespinner.setAdapter(GradeSpinNearrayaAdapter);
l、 addView(creditspinner);
l、 addView(坡度微调器);
subjectData.addView(l);
}
无效填充2015()
{
等级。添加(“O”);等级。添加(“A+”;
等级。添加(“A”);等级。添加(“B+”;
等级。添加(“B”);等级。添加(“C”);
等级。添加(“P”);等级。添加(“F”);
等级。添加(“Ab”);等级。添加(“I”);
评分点。添加(10);评分点。添加(9);
评分点。添加(8);评分点。添加(7);
评分点。添加(6);评分点。添加(5);
gradePoints.add(4);gradePoints.add(0);
gradePoints.add(0);gradePoints.add(0);

对于(inti=1;i好的,我得到了。我做了另一个用于调试的测试应用程序,直到我得到它。似乎我根本不需要布局充气机。 代码如下:

public class MainActivity extends AppCompatActivity {
    ArrayList<Integer> creditIds;
    ArrayList<Integer> gradeIds;
    ArrayList<String> credits;
    ArrayList<String> grades;
    ArrayList<Integer> gradePoints;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        credits=new ArrayList<>();
        grades=new ArrayList<>();
        gradePoints=new ArrayList<>();
        fill2015();
        creditIds=new ArrayList<>();
        gradeIds=new ArrayList<>();
        final LinearLayout myData=(LinearLayout)findViewById(R.id.myData);
        addforanothersubject(myData);
        Button b1=(Button)findViewById(R.id.button);
        b1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            addforanothersubject(myData);
            }
        });
    }
    void addforanothersubject(LinearLayout myData)
    {
        Context c=MainActivity.this;
        LinearLayout.LayoutParams lp = new 
LinearLayout.LayoutParams(LinearLayout
                .LayoutParams.MATCH_PARENT, 
LinearLayout.LayoutParams.MATCH_PARENT);
        LinearLayout l=new LinearLayout(c);
        l.setOrientation(LinearLayout.HORIZONTAL);
        l.setLayoutParams(lp);
        l.setGravity(Gravity.CENTER_HORIZONTAL);
        Spinner creditspinner=new Spinner(c);
        Spinner gradespinner=new Spinner(c);
        ArrayAdapter<String> creditSpinnerArrayAdapter = new ArrayAdapter<>
(c,
                android.R.layout.simple_spinner_item, credits);
        creditspinner.setAdapter(creditSpinnerArrayAdapter);
        ArrayAdapter<String> gradeSpinnerArrayAdapter = new ArrayAdapter<>
(c,
                android.R.layout.simple_spinner_item, grades);
        gradespinner.setAdapter(gradeSpinnerArrayAdapter);
        l.addView(creditspinner);
        l.addView(gradespinner);
        myData.addView(l);
    }
    void fill2015()
    {
        grades.add("O");        grades.add("A+");
        grades.add("A");        grades.add("B+");
        grades.add("B");        grades.add("C");
        grades.add("P");        grades.add("F");
        grades.add("Ab");        grades.add("I");
        gradePoints.add(10);        gradePoints.add(9);
        gradePoints.add(8);        gradePoints.add(7);
        gradePoints.add(6);        gradePoints.add(5);
        gradePoints.add(4);        gradePoints.add(0);
        gradePoints.add(0);        gradePoints.add(0);
        for(int i=1;i<=10;i++)
            credits.add(""+i);
    }
}
public类MainActivity扩展了AppCompatActivity{
ArrayList CreditID;
arraylistgradeid;
ArrayList学分;
ArrayList等级;
ArrayList评分点;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
credits=新的ArrayList();
等级=新的ArrayList();
gradePoints=newarraylist();
fill2015();
creditIds=newarraylist();
gradeId=新的ArrayList();
最终线性布局myData=(线性布局)findViewById(R.id.myData);
添加另一个主题(myData);
按钮b1=(按钮)findViewById(R.id.Button);
b1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
添加另一个主题(myData);
}
});
}
另一个主体的void add(线性布局myData)
{
上下文c=MainActivity.this;
LinearLayout.LayoutParams lp=新建
LinearLayout.LayoutParams(LinearLayout
.LayoutParams.MATCH_父级,
LinearLayout.LayoutParams.MATCH_PARENT);
线性布局l=新的线性布局(c);
l、 设置方向(线性布局。水平);
l、 setLayoutParams(lp);
l、 设置重力(重心水平);
微调器creditspinner=新微调器(c);
微调器等级微调器=新微调器(c);
ArrayAdapter CreditSpinNearrayAdapter=新的ArrayAdapter
(c),
android.R.layout.simple_微调器_项目,学分);
setAdapter(CreditSpinNearrayaAdapter);
ArrayAdapter Grade SpinNearrayAdapter=新的ArrayAdapter
(c),
android.R.layout.simple_微调器_项目,等级);
gradespinner.setAdapter(GradeSpinNearrayaAdapter);
l、 addView(creditspinner);
l、 addView(坡度微调器);
myData.addView(l);
}
无效填充2015()
{
等级。添加(“O”);等级。添加(“A+”;
等级。添加(“A”);等级。添加(“B+”;
等级。添加(“B”);等级。添加(“C”);
等级。添加
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="6dp"
    android:paddingEnd="6dp"
    android:paddingLeft="6dp"
    android:paddingRight="6dp"
    android:paddingStart="6dp"
    android:paddingTop="6dp"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="innominatebit.srmite.SGPA"
    tools:showIn="@layout/activity_sgpa">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:id="@+id/subjectdata"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_above="@+id/button2"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:gravity="center_horizontal"
            android:orientation="vertical">


        </LinearLayout>
    </ScrollView>

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="Button" />

</RelativeLayout>
public class MainActivity extends AppCompatActivity {
    ArrayList<Integer> creditIds;
    ArrayList<Integer> gradeIds;
    ArrayList<String> credits;
    ArrayList<String> grades;
    ArrayList<Integer> gradePoints;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        credits=new ArrayList<>();
        grades=new ArrayList<>();
        gradePoints=new ArrayList<>();
        fill2015();
        creditIds=new ArrayList<>();
        gradeIds=new ArrayList<>();
        final LinearLayout myData=(LinearLayout)findViewById(R.id.myData);
        addforanothersubject(myData);
        Button b1=(Button)findViewById(R.id.button);
        b1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            addforanothersubject(myData);
            }
        });
    }
    void addforanothersubject(LinearLayout myData)
    {
        Context c=MainActivity.this;
        LinearLayout.LayoutParams lp = new 
LinearLayout.LayoutParams(LinearLayout
                .LayoutParams.MATCH_PARENT, 
LinearLayout.LayoutParams.MATCH_PARENT);
        LinearLayout l=new LinearLayout(c);
        l.setOrientation(LinearLayout.HORIZONTAL);
        l.setLayoutParams(lp);
        l.setGravity(Gravity.CENTER_HORIZONTAL);
        Spinner creditspinner=new Spinner(c);
        Spinner gradespinner=new Spinner(c);
        ArrayAdapter<String> creditSpinnerArrayAdapter = new ArrayAdapter<>
(c,
                android.R.layout.simple_spinner_item, credits);
        creditspinner.setAdapter(creditSpinnerArrayAdapter);
        ArrayAdapter<String> gradeSpinnerArrayAdapter = new ArrayAdapter<>
(c,
                android.R.layout.simple_spinner_item, grades);
        gradespinner.setAdapter(gradeSpinnerArrayAdapter);
        l.addView(creditspinner);
        l.addView(gradespinner);
        myData.addView(l);
    }
    void fill2015()
    {
        grades.add("O");        grades.add("A+");
        grades.add("A");        grades.add("B+");
        grades.add("B");        grades.add("C");
        grades.add("P");        grades.add("F");
        grades.add("Ab");        grades.add("I");
        gradePoints.add(10);        gradePoints.add(9);
        gradePoints.add(8);        gradePoints.add(7);
        gradePoints.add(6);        gradePoints.add(5);
        gradePoints.add(4);        gradePoints.add(0);
        gradePoints.add(0);        gradePoints.add(0);
        for(int i=1;i<=10;i++)
            credits.add(""+i);
    }
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="aaa.test.MainActivity">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <LinearLayout
                android:id="@+id/myData"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical" >
            </LinearLayout>
            <Button
                android:id="@+id/button"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:text="Add" />

        </LinearLayout>
    </ScrollView>

</RelativeLayout>