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>

效果截图:

  1. 当前活动MainActivity
    这里写图片描述
    2.点击跳转到FristActivtiy
    这里写图片描述
    3.点击跳转到SecondActivtiy
    这里写图片描述

注:

**不知道大家是否注意到MainActivity跳转到FirstActivity和FirstActivity跳转到SecondActivity的actionStart()的来源不一样,前者来自于BaseActivity,而后者来自于SecondActivity的静态方法。之所以这样写,有如下两点:
1.在app开发中经常要写跳转的代码,所以是为了“偷懒”,简洁代码。
2.为什么不在BaseActivity里面重载SecondActivity里面的actionStart()方法,原因是公司的项目,有可能是联合开发,有一种情景就是SecondActivity是别人开发的,但是我要跳转到SecondActivity,而且需要传递数据,可问题是传递怎么的数据我们是不知道的,因此,为了不要让别人来询问你,这个SecondActivity需要传递什么的问题,那么在开发的时候就暴露一个方法给外界,方便跳转,提高开发效率>_<**

1 0
原创粉丝点击