关于java与kotlin的不同
事件点击
首先都要进行button的注册
重写OnClick方法(这个是主要的),不过这里要传入一个(new View.OnClickListener()
再创建Intent实例进行跳转
Button btn = findViewById(R.id.name);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent3 = new Intent();
intent3.setClass(ChengxuActivity.this,MainActivity.class);
startActivity(intent3);
}
});
首先都要进行button的注册
直接创建Intent实例进行跳转。
不过要注意的是在使用Intent是kotlin是
val intent1 = Intent(this,KexueActivity::class.java)
val btn = findViewById(R.id.name)
val intent1 = Intent(this,KexueActivity::class.java)
startActivity(intent1)
隐式intent选择跳转
java中使用隐式intent跳转实现选择使用,只需要在想跳转到的几个Activity中加上想要实现的ACTION实例:
逻辑:
Button btn1 = findViewById(R.id.Shift);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction("com.example.ClassTest.ACTION_START");
//自定义设置action的名字一般为防止冲突都是包名加action名字。
startActivity(intent);
}
});
AndroidMainifest中代码
<activity android:name=".Second">
<intent-filter>
<action android:name="com.example.ClassTest.ACTION_START"/>
//匹配在逻辑设计中的action名字,这是第一步过滤。也是第一次匹配
<category android:name="android.intent.category.DEFAULT"/>
//这是匹配第二个元素,Category和action一样不过这里可以用DEFAULT来标识、
</intent-filter>
</activity>
<activity android:name=".Another" >
<intent-filter>
<action android:name="com.example.ClassTest.ACTION_START"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
利用Intent传值,并显示在TextView上
Java
首先将数值传到intent中,使用putExtra方法。同时传入的第一个参数是你要传值的名字,用于后来接收。第二个参数是你要传入的值。
要注意的是,你要传的值的类型和你要选择的方法必须一致。
使用putExtra方法以后,可以启动Intent。随着跳转到另一个界面,intent也传到另一个界面,值也到达另一个界面,这时候就需要去接收intent。在第二个界面中使用getIntent方法。将这个intent接受到你在这个界面中所定义个intent1中,并使用intent1.getExtra方法接受你从上一个activity中发出的值。
同样的这里也需要去与你发出的值选择对应的方法。
在获得了从上一个activity中传过来的值后,如何显示在TextView中?
利用的是一个setText函数,将你的textView注册后,利用函数展现。
tv.setText(string);//将数据展示到TextView中
这里的string是我的实验中的值,这里填的就是你接受的那个值。
同样的,你传什么类型的值,你就要用什么类型的值去接受它,例如String类型
String string = in.getStringExtra("name");
完整代码:
第一个activity
Button btn1 = findViewById(R.id.shift);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
EditText et = findViewById(R.id.mingzi);
EditText et1 = findViewById(R.id.haoma);
String str1 = et1.getText().toString();//获取editText中的信息
String str = et.getText().toString();
intent.putExtra("name",str);
intent.putExtra("number",str1);
intent.setAction("com.example.ClassTest3.ACTION_START");//自定义设置action的
// intent.putExtra(Intent.EXTRA_TITLE,"选择你要用的app");
// intent.putExtra(Intent.EXTRA_INTENT, intent);
startActivity(intent);
这里是用隐式Intent启动activity,不过显式Intent一样的方法
需要接受的activity
Button btn = findViewById(R.id.btn3);
Intent in = getIntent();//获取从intent传来的数据
TextView tv = findViewById(R.id.xiangximingzi);
TextView tv1 = findViewById(R.id.c);
String string = in.getStringExtra("name");
String string1 = in.getStringExtra("number");
//try {
if (in != null){
tv.setText(string);//将数据展示到TextView中
tv1.setText(string1);//将数据展示到TextView中
}else {
//catch (NullPointerException e ) {
Toast.makeText(this, "请输入", Toast.LENGTH_LONG).show();
//}
}
我这里加了一个判空设置,并如果为空就提示需要输入