首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用On Click Listener转到不同的xml布局?

如何使用On Click Listener转到不同的xml布局?
EN

Stack Overflow用户
提问于 2012-04-01 22:47:40
回答 2查看 961关注 0票数 0

我将代码设置为在单击getFin按钮时转到标题为getfinal的xml布局。但每当我单击该按钮时,我的应用程序就会崩溃。在这种情况下使用setContentview命令是错误的吗?如果是这样,我如何在单击按钮时转到新的xml布局?

代码语言:javascript
运行
复制
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页面的代码,请让我知道。

EN

回答 2

Stack Overflow用户

发布于 2012-04-01 22:52:18

对于同一个活动,不能两次使用setContentView()。最好是创建一个全新的Activity,并使用setContentView()为其分配getFinal布局。使用意图在按钮的onClick()中OPen该活动。

票数 2
EN

Stack Overflow用户

发布于 2012-04-01 22:56:00

将布局getfinal.xml移动到位于main.xml中的ViewSwitcher中。在onClick中,只需使用ViewSwitchers showNext()方法切换布局。

布局文件可能如下所示(sudo代码)。

代码语言:javascript
运行
复制
 <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>

然后执行以下操作:

代码语言:javascript
运行
复制
  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();
        .....  
    });
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9965274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档