yinbaoshiguang 2019-06-27
上一篇写了Activity的生命周期,这方面的知识在我们日常开发的时候经常会用到。同样的这篇也写一些基础的知识。
Activity跳转配合Intent实现,在将跳转之前,先了解一下如何给Button设置监听事件。比较关键的就是给Button设置一个id,布局文件如下:
<?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="com.isdust.zor.view_learn.activity.FirstActivity"> <Button android:id="@+id/jump" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
在上面的布局中,给Button设定了一个id位jump,在activity代码中首先要获得这个控件。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_first); Button jump = findViewById(R.id.jump); }
在onCreate方法中的setContentView就是将布局文件和Activity绑定在一块,获得控件的api就是findViewById。
获得到控件之后,需要做的就是设置监听事件,对应的api方法就是setOnClickListener。
jump.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { } });
到这里监听事件也设置完成了,那么就可以进行Intent跳转的学习了。Intent的跳转有两种实现方式:
显示跳转:
显示跳转中需要做的就是确定当前Activity的Context和需要跳转的Activity的class
Intent intent = new Intent(); intent.setClass(FirstActivity.this,SecondActivity.class) startActivity(intent);
隐式跳转
隐式跳转首先要给需要跳转的activity设定一个action,然后在Intent中传入这个action,那样就可以直接跳转到对应的Activity。
首先设置action,这个就是在配置文件AndroidManifest.xml中配置
<activity android:name=".activity.SecondActivity"> <intent-filter> <action android:name="view_learn" /> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
这个地方主要是配置了两个intent-filter的子项目,一个action,一个category。配置好这个,就可以在activity中配置intent。
Intent intent = new Intent(); intent.setAction("view_learn"); startActivity(intent);
这样就可以完成跳转了。
FirstActivity
public class FirstActivity extends Activity { private Button jump; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_first); jump = findViewById(R.id.jump); jump.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(); intent.setAction("view_learn"); startActivity(intent); // intent.setClass(FirstActivity.this,SecondActivity.class) startActivity(intent); } }); } }
SecondActivity
public class SecondActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); } }
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.isdust.zor.view_learn"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> </activity> <activity android:name=".activity.FirstActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".activity.SecondActivity"> <intent-filter> <action android:name="view_learn" /> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> </application> </manifest>
到这里,跳转就介绍的差不多了,下一章就详细介绍一下Intent。