我将代码设置为在单击getFin按钮时转到标题为getfinal的xml布局。但每当我单击该按钮时,我的应用程序就会崩溃。在这种情况下使用setContentview命令是错误的吗?如果是这样,我如何在单击按钮时转到新的xml布局?
package wilson.GC;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.view.View;
import android.view.View.OnClickListener;
public class GradeCalculatorActivity extends Activity {
/** Called when the activity is first created. */
Button getEx, getFin;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getEx = (Button)findViewById(R.id.getexambutton);
getFin = (Button)findViewById(R.id.getfinalbutton);
getFin.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
setContentView(R.layout.getfinal);
double q1, q2, ex, fin;
EditText etq1, etq2, eteg;
etq1 = (EditText)findViewById(R.id.editText1);
q1 = Double.parseDouble(etq1.getText().toString());
etq2 = (EditText)findViewById(R.id.editText2);
q2 = Double.parseDouble(etq2.getText().toString());
eteg = (EditText)findViewById(R.id.editText3);
ex = Double.parseDouble(eteg.getText().toString());
fin = 0.4*q1+0.4*q2+0.2*ex;
if(fin == (int)fin){
System.out.println((int)fin);
}
else{
fin = 0.01*((int)(fin*100));
System.out.println(fin);
}
TextView tvfin = null;
tvfin.setText(fin+"");
tvfin = (TextView)findViewById(R.id.tvfinalgrade);
}
});
}
}
如果需要这两个xml页面的代码,请让我知道。
发布于 2012-04-01 14:52:18
对于同一个活动,不能两次使用setContentView()
。最好是创建一个全新的Activity,并使用setContentView()
为其分配getFinal布局。使用意图在按钮的onClick()
中OPen该活动。
发布于 2012-04-01 14:56:00
将布局getfinal.xml移动到位于main.xml中的ViewSwitcher中。在onClick中,只需使用ViewSwitchers showNext()方法切换布局。
布局文件可能如下所示(sudo代码)。
<ViewSwitcher android="@+id/switcher>
<LinearLayout android:id="@+id/first_layout"> ... first content with button ... </LinearLayout>
<LinearLayout android:id="@+id/second_layout"> ... content to show when pressed... </LinearLayout>
</ViewSwitcher>
然后执行以下操作:
setContentView(R.layout.main);
getEx = (Button)findViewById(R.id.getexambutton);
switch = (ViewSwitcher) findViewById(R.id.switcher);
getFin = (Button)findViewById(R.id.getfinalbutton);
getFin.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
switch.showNext();
.....
});
https://stackoverflow.com/questions/9965274
复制相似问题