Acitivty最佳实践1----知晓当前是哪一个活动正在运行
来源:互联网 发布:掌中宝app软件下载 编辑:程序博客网 时间:2024/05/21 11:07
Acitivty最佳实践
1.知晓当前是哪一个活动正在运行
- 往往我们需要看别人写的源码,但是有时候不知道启动的是哪一个活动,那么我们可以通过下面要讲解的方式知道,启动的当前活动到底是哪一个。
- 在做Android开发的时候经常需要在Activity之间跳转,常用方式往往是Intent intent = new (context,className.class) startActivity(intent);这种方式,又有时候在跳转Activity需要传递数据,同时需要跳转的那个Activity并不是我们自己写的,那么我们需要知道写那个Activity的程序员我们到底需要传递哪些数据,很明显这样开发是很麻烦的,写这个Activity的人,总是要给别人回答,那么鞋面一种方式可以解决这样的问题。
- 因为经常需要跳转,那么我们可以对跳转的这一部分代码进行封装。
代码地址:http://download.csdn.net/detail/u013922681/8946779
下面我们通过代码依依讲解
- 先看一下项目结构
- BaseActivity 继承Activity
package com.example.demo01;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.util.Log;public class BaseActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); Log.i("BaseActivity", getClass().getSimpleName()); //得当当前类的名称 } public void actionStart(Context context,Class<?> className){ Intent intent = new Intent(context, className); startActivity(intent); }}
- MainActivtiy 继承自BaseActivity
package com.example.demo01;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import com.example.demo01.FirstActivtiy;public class MainActivity extends BaseActivity { private Button btnMain; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnMain = (Button) findViewById(R.id.activity_main_btn_main); btnMain.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub actionStart(MainActivity.this,FirstActivtiy.class); } }); }}
- activty_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:id="@+id/activity_main_btn_main" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="跳转到第FirstActivity" /></RelativeLayout>
- FirstActivty 继承BaseActivity
package com.example.demo01;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class FirstActivtiy extends BaseActivity { private Button btnFirst; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_first); btnFirst = (Button) findViewById(R.id.activity_main_btn_first); btnFirst.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub SecondActivtiy.actionStart(FirstActivtiy.this,"下午将近四点","写博客有点晕,给好评~_~"); } }); }}
activity_first.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:id="@+id/activity_main_btn_first" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="跳转到第SecondActivity" /></RelativeLayout>
- SecondActivity继承BaseActivity
package com.example.demo01;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class SecondActivtiy extends BaseActivity { private Button btnSecond; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); tv = (TextView) findViewById(R.id.activity_second_tv); Intent intent = getIntent(); String data1 = intent.getStringExtra("data1"); String data2 = intent.getStringExtra("data2"); tv.setText("data1:"+data1+"\n"+ "data2:"+data2); btnSecond = (Button) findViewById(R.id.activity_second_btn_second); btnSecond.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub actionStart(SecondActivtiy.this, MainActivity.class); } }); } /** * 启动activty * @param context * @param data1 附加参数1 * @param data2 附加参数2 */ public static void actionStart(Context context,String data1,String data2){ Intent intent = new Intent(context, SecondActivtiy.class); intent.putExtra("data1", data1); intent.putExtra("data2", data2); context.startActivity(intent); }}
activty_second.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:id="@+id/activity_second_btn_second" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="跳转到第MainActivity" /> <TextView android:layout_below="@id/activity_second_btn_second" android:id="@+id/activity_second_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" /></RelativeLayout>
最后注意配置活动,AndroidMinifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.demo01" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.demo01.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.demo01.FirstActivtiy" android:label="@string/app_name_1"></activity> <activity android:name="com.example.demo01.SecondActivtiy" android:label="@string/app_name_2"></activity> </application></manifest>
效果截图:
- 当前活动MainActivity
2.点击跳转到FristActivtiy
3.点击跳转到SecondActivtiy
注:
**不知道大家是否注意到MainActivity跳转到FirstActivity和FirstActivity跳转到SecondActivity的actionStart()的来源不一样,前者来自于BaseActivity,而后者来自于SecondActivity的静态方法。之所以这样写,有如下两点:
1.在app开发中经常要写跳转的代码,所以是为了“偷懒”,简洁代码。
2.为什么不在BaseActivity里面重载SecondActivity里面的actionStart()方法,原因是公司的项目,有可能是联合开发,有一种情景就是SecondActivity是别人开发的,但是我要跳转到SecondActivity,而且需要传递数据,可问题是传递怎么的数据我们是不知道的,因此,为了不要让别人来询问你,这个SecondActivity需要传递什么的问题,那么在开发的时候就暴露一个方法给外界,方便跳转,提高开发效率>_<**
1 0
- Acitivty最佳实践1----知晓当前是哪一个活动正在运行
- 安卓开发:活动的最佳实践1--知晓当前是在哪一个活动
- 活动的最佳实践之知晓当前是在哪一个活动
- 知晓当前是哪一个活动
- 活动的最佳实践(知晓当前是在哪一个活动,随时随地退出程序,启动活动的最佳写法)
- 活动的最佳实践(知晓当前是在哪一个活动,随时随地退出程序,启动活动的最佳写法)
- android-知晓当前是哪一个活动
- 知晓当前是在哪一个活动
- Android知晓当前是在哪一个活动
- 知晓当前页面是在哪一个活动
- Android Studio 活动的最佳实践 知晓当前是在哪一个活动 随时随地地进入程序 启动活动的最佳写法 第一行代码
- 安卓开发技巧三:知晓当前是哪一个活动
- activity小结——知晓当前是在哪一个活动
- Activity技巧三重奏之一:知晓当前是在哪一个活动
- 《第一行代码》知晓当前是在哪一个活动
- 【Android】23、如何知晓当前是在哪一个活动
- 活动的最佳实践之 如何知晓当前是在哪个活动 --16
- 知晓手机上当前运行是哪一个活动
- 2015年7月29日工作总结
- JavaScript之表单验证(2)(正则表达式)
- mongodb源码分析
- Centos6.6 安装Oracle 11g
- 百度地图提供服务——本地搜索,范围搜索
- Acitivty最佳实践1----知晓当前是哪一个活动正在运行
- 百度地图提供服务——本地搜索,范围搜索
- 百度地图提供服务——本地搜索,范围搜索
- 百度地图提供服务——本地搜索,范围搜索
- 2015 Multi-University Training Contest 4 1001 Olympiad
- block中用到self要特别注意内存泄露问题
- http协议详解(转自乔晓松的博客)
- 百度地图提供服务——本地搜索,范围搜索
- 编译android源码apk是否生成odex方法