Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的android项目的活动正在跳过_Android_Android Intent_Android Activity - Fatal编程技术网

我的android项目的活动正在跳过

我的android项目的活动正在跳过,android,android-intent,android-activity,Android,Android Intent,Android Activity,我创建了一个简单的android项目。但是,问题是它的三项活动中的第二项活动正在跳过。logcat很少显示警告 "Skipped 108 frames! The application may be doing too much work on its main thread." 我的第二项活动- EditText et1,et2,et3,et4; Button btn; int i,counter; double theory_credit,theory_gp,lab_credit,lab_

我创建了一个简单的android项目。但是,问题是它的三项活动中的第二项活动正在跳过。logcat很少显示警告

"Skipped 108 frames! The application may be doing too much work on its main thread."
我的第二项活动-

EditText et1,et2,et3,et4;
Button btn;
int i,counter;
double theory_credit,theory_gp,lab_credit,lab_gp,total_credit,total_gp,cgpa;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_another);

    et1 = (EditText) findViewById(R.id.editText1);
    et2 = (EditText) findViewById(R.id.editText2);
    et3 = (EditText) findViewById(R.id.editText3);
    et4 = (EditText) findViewById(R.id.editText4);
    btn = (Button) findViewById(R.id.button1);

    String value=getIntent().getStringExtra("Input");
    counter=Integer.parseInt(value);
    theory_credit=theory_gp=lab_credit=lab_gp=total_credit=total_gp=cgpa=0.0;

    for(i=1;i<=counter;i++){


        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                String inp;

                inp=et1.getText().toString();
                theory_credit=Double.parseDouble(inp);
                et1.setText("");
                inp=et2.getText().toString();
                theory_gp=Double.parseDouble(inp);
                et2.setText("");
                inp=et3.getText().toString();
                lab_credit=Double.parseDouble(inp);
                et3.setText("");
                inp=et4.getText().toString();
                lab_gp=Double.parseDouble(inp);
                et4.setText("");

                if(theory_gp>0.0 && theory_credit>0.0){
                    total_credit+=theory_credit;
                    total_gp+=(theory_gp*theory_credit);
                }

                if(lab_gp>0.0 && lab_credit>0.0){
                    total_credit+=lab_credit;
                    total_gp+=(lab_gp*lab_credit);
                }
            }
        });
    }

    if(total_credit>0.0){
        cgpa=total_gp/total_credit;
    }

    Intent intent=new Intent(AnotherActivity.this, FinalActivity.class);
    intent.putExtra("Result", cgpa);
    startActivity(intent);
}
编辑文本et1、et2、et3、et4; 按钮btn; int i,计数器; 双倍理论学分、理论学分、实验室学分、实验室学分、总学分、总学分、cgpa; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_另一个); et1=(EditText)findViewById(R.id.editText1); et2=(EditText)findViewById(R.id.editText2); et3=(EditText)findViewById(R.id.editText3); et4=(EditText)findViewById(R.id.editText4); btn=(按钮)findViewById(R.id.button1); 字符串值=getIntent().getStringExtra(“输入”); 计数器=整数.parseInt(值); 理论积分=理论积分=实验室积分=实验室积分=总积分=总积分=cgpa=0.0; 对于(i=1;i0.0&&理论信用>0.0){ 总学分+=理论学分; 总积分+=(理论积分*理论积分); } 如果(实验室学分>0.0和实验室学分>0.0){ 总学分+=实验室学分; 总总积分+=(实验室积分*实验室积分); } } }); } 如果(总积分>0.0){ cgpa=总积分/总积分; } 意向意向=新意向(另一个activity.this、finalictivity.class); 意图。额外(“结果”,cgpa); 星触觉(意向); } 我怎样才能解决这个问题?
我的第一个和第三个活动运行良好。

尝试删除
setContentView(R.layout.activity\u另一个)从for循环内部。您已经在上面设置了视图。您是否出于任何原因将其放入其中?

不需要在一个java类中添加两个布局。每个布局仅与单个类关联。因此,在代码中您已经编写了两次
setContentView(R.id.yourLayout)
,这是不需要的。此外,在一个UI线程中,您不能放置两个布局,这可能也是导致崩溃的原因之一。

您在模拟器或真实设备上测试过这一点吗?大多数情况下,此错误是由于模拟器速度慢造成的。在emulator或真实设备上运行应用程序时,您看到了吗?我在emulator和真实设备上都尝试过。但结果相同。即使删除该语句,结果也相同。因为最后一个活动应该在终止循环后开始。如果我对第一个“setContentView(R.id.yourLayout)”进行注释在循环之外,程序崩溃,如果我把这个语句放进去,它就会跳过第二个活动。如果你必须转移到另一个活动使用意图,你使用的方法是不合适的。在super.onCreate(savedInstanceState)函数之后设置content视图,这肯定会解决您的问题。实际上,我在循环的每个迭代中使用editText获取4个输入。因此,我需要为输入设置空白字段,所以我将语句“setContentView(R.id.yourLayout)”。在输入最后一个输入之后,我将计算的值发送给下一个活动。对于空白字段的设置,使用<代码> E1.StTeScript(“”)删除EdtTeX中的文本;代码>或
editText.getText().clear()无需再次设置视图。尝试了这两种方法,但结果相同。第二个活动正在跳过。