问题描述
在页面跳转时无法打开对应页面,报错显示无法打开activity,前提是activity已经在清单文件中注册过了。
问题原因
由于在设置TextView的text值时,数值类型不匹配导致页面终止无法打开,应该是String类型而我当初传入的结果值为int类型。
解决方案
使用字符串拼接将int类型转换成String类型
activity文件
package com.example.app01;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class FabooActivity extends AppCompatActivity {
private TextView txt1;
private TextView txt2;
private Button btn1;
private String value;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_faboo);
initView();
calculate();
}
public void initView(){
txt1=findViewById(R.id.content);
txt2=findViewById(R.id.result);
Intent intent=getIntent();
value=intent.getStringExtra("index");
txt1.setText("计算第"+value+"项斐波那契数列的值");
}
public void calculate(){
int result=feibo(Integer.parseInt(value));
//txt2.setText(result);错误代码
txt2.setText("结果是:"+result);//正确代码
}
public int feibo(int n){
if(n==1)return 1;
if(n==2)return 1;
return feibo(n-1)+feibo(n-2);
}
}
布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".FabooActivity"
android:orientation="vertical">
<TextView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="计算第几项的斐波那契数列值">
</TextView>
<TextView
android:id="@+id/result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="结果是:">
</TextView>
<Button
android:id="@+id/okbtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="完成计算">
</Button>
</LinearLayout>
总结
一般这种activity文件无法打开的一系列问题,从一下角度进行排查
- 第一考虑是否在清单文件中注册登记。
- 第二考虑布局文件.xml中是否有控件名称写错,例如TextView写完textview这里也是不行的,有些地方编辑器对xml文件代码检测能力不严格导致表面上能够通过编译,但是在运行调试时会报错。
- 第三,考虑在事件响应处理时给控件动态赋值时数据类型是否匹配。
END.