我的android项目的活动正在跳过
我创建了一个简单的android项目。但是,问题是它的三项活动中的第二项活动正在跳过。logcat很少显示警告我的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_
"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()代码>无需再次设置视图。尝试了这两种方法,但结果相同。第二个活动正在跳过。