0

我将代码设置为在单击 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 页面的代码,请告诉我。

4

2 回答 2

2

您不能setContentView()对同一个 Activity 使用两次。最好创建一个全新的 Activity 并使用setContentView(). onClick()使用 Intent 打开按钮中的Activity 。

于 2012-04-01T14:52:17.883 回答
2

将布局 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();
        .....  
    });
于 2012-04-01T14:55:59.693 回答