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