2012-04-01 59 views
0

我有我的代码设置为单击getFin按钮时,标题为getfinal的xml布局。但是,只要我点击那个按钮,我的应用程序就会崩溃。 setContentview是否在这种情况下使用了错误的命令?如果是这样,我怎样才能去点击按钮上的新的XML布局?如何使用On Click Listener转到不同的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页面的代码。

+0

可以粘贴你的崩溃日志 – Ishu 2012-04-01 14:50:14

回答

2

对于同一活动,您不能使用setContentView()两次。您最好使用setContentView()来制作一个全新的Activity并为其指定getFinal布局。使用意图打开按钮的onClick()中的活动。

+0

谢谢,虐待试试吧! – Wilson 2012-04-01 14:54:48

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(); 
     ..... 
    });