Activity(四)

获取当前的活动名称

创建一个BaseActivity类,继承AppCompatActivity类



public class BaseActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 获取Activity的名称 Log.d("BaseActivity",getClass().getSimpleName()); }

更改活动的继承方式,由AppCompatActivity改为我们自定义的BaseActivity
这时就可以在log里显示当前的活动名称了。

随时随地的退出

创建一个新的类ActivityCollector


public class ActivityCollector { // 创建一个List用来接收Activity public static List<Activity> activities = new ArrayList<>(); //添加Activity到List public static void addActivity(Activity activity) { activities.add(activity); } // 移除Activity public static void removeActivity(Activity activity) { activities.remove(activity); } // 销毁Activity public static void finishAll() { for (Activity activity : activities ) { if (!activity.isFinishing()) activity.finish(); } } }

在BaseActivity里更改成


public class BaseActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 获取Activity的名称 Log.d("BaseActivity",getClass().getSimpleName()); // 将Activity添加大List中 ActivityCollector.addActivity(this); } @Override protected void onDestroy() { super.onDestroy(); // 将当前的Activity移除 ActivityCollector.removeActivity(this); } }

销毁退出程序


Button button = (Button)findViewById(R.id.second_btn1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(SecondActivity.this,ThirdActivity.class); startActivity(intent); } });

启动活动的写法

一般是通过Intent来构建当前的“意图”,然后调用startActivity()或者startActivityForResult()方法启动
但是在多人合作在传递数据的时候就会显得非常的麻烦所以我们可以通过构建一个方法,通过参数表明我们的意图。

比如我们要从FristActivity启动SecondActivity 同时要传递两个数据给SecondActivity


//在SecondActivity创建 public static void actionStart(Context context, String data1, String data2) { Intent intent = new Intent(context, SecondActivity.class); intent.putExtra("param1", data1); intent.putExtra("param2", data2); context.startActivity(intent); }

//在FirstActivity里创建 Button button = (Button)findViewById(R.id.first_btn1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SecondActivity.actionStart(FirstActivity.this,"data1","data2"); } });
张贴在未分类

发表评论