问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

android开发中, 关闭另一个activity6

发布网友 发布时间:2023-11-30 07:10

我来回答

3个回答

热心网友 时间:2024-07-14 16:41

楼上说的很对的。
this可以理解为就是A_activity这个类;
一般就可以定义到这里,可以看一下activity的生命周期就晓得了,其他地方大部分也可以,就是别定义到onPause或者各种listener中就行了。多看看生命周期。
另外,public static A_activity mc= null,这种方式不好,容易造成内存泄漏,而且很容易造成此activity无法关闭。

热心网友 时间:2024-07-14 16:41

"mc=this"."this"指的就是该类的实例(也叫做类的对象)。在这里的意思就是在变量mc中存储下"A_activity"的引用,然后在B_Activity中才可调用其的finish()方法。

不一定非得在onCreate里面定义,也可在自定义的方法中定义,意义是一样的。

这不是一个android的特性,而是Java语言的一个特性,"this"关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。


楼主可参考下《Java编程思想》中"this关键字"这一节。

追问这样啊, 就是说this通常是指代当前的类对象?
那么这一句: Intent(this,xxx.class);
就是在用类名显示跳转的时候, setClass的第一个参数不是应该是包名吗? 这里的this指什么呢?

追答Intent setClass (Context packageContext, Class cls)
API中,第一个参数不是包名,而是一个Context类型,而Activity是继承Context的。那“this”代表的就是当前的Activity。

热心网友 时间:2024-07-14 16:42

我给你发一个吧:这个是activity的管理,所有的activity都继承自一个模板
package com.xxx.sh;

import java.util.LinkedList;

import android.app.Activity;
import android.text.TextUtils;

public class ActivityManager {
private static LinkedList<Activity> activityStack;
private static ActivityManager instance;

private ActivityManager() {
}

public static ActivityManager getScreenManager() {
if (instance == null) {
instance = new ActivityManager();
}
return instance;
}

/**
* 退出栈顶Activity
*
* @param activity
*/
public void popActivity(Activity activity) {
if (activity != null) {
activityStack.remove(activity);
LOG.i("Activity管理", activity.getClass().getSimpleName() + "弹出栈");
activity.finish();
activity = null;
}
}

/**
* 获得当前栈顶Activity
*
* @return
*/
public Activity currentActivity() {
Activity activity = null;
if (activityStack != null && !activityStack.isEmpty())
activity = activityStack.get(activityStack.size() - 1);
return activity;
}

/**
* 将当前Activity推入栈中
*
* @param activity
*/
public void pushActivity(Activity activity) {
if (activityStack == null) {
activityStack = new LinkedList<Activity>();
}
activityStack.add(activity);
LOG.i("Activity管理", activity.getClass().getSimpleName() + "加入栈中");
}

/**
* 退出栈中所有Activity
*/
public void popAllActivityExceptOne() {
while (true) {
Activity activity = currentActivity();
if (null == activity) {
break;
}
// if (activity != null) {
// activity.finish();
// }
popActivity(activity);
}
}

public void popAllActivity() {
while (true) {
Activity activity = currentActivity();
if (null == activity) {
break;
}
// if (activity != null) {
// activity.finish();
// }
popActivity(activity);
}
}

/**
* 退出指定名字的activity
*/
public void popPointNameActivity(String name) {
while (true) {
Activity activity = currentActivity();
if (null == activity) {
break;
}

String activityName = activity.getComponentName().getClassName().toString();
if (TextUtils.equals(name, activityName)) {
continue;
}

// if (activity != null) {
// activity.finish();
// }
popActivity(activity);
}
}

/**
* 获得当前ACTIVITY 名字
*/
public String getCurrentActivityName() {
Activity activity = currentActivity();
String name = "";
if (activity != null) {
name = activity.getComponentName().getClassName().toString();
}
return name;
}

public boolean isCatalogActivity() {
for (int j = 0; j < activityStack.size(); j++) {
Activity activity = activityStack.get(j);
if (activity instanceof CatalogActivity) {
return true;
}
}
return false;
}

// 返回大厅页面
public void popToCatalogActivity() {
while (true) {
Activity activity = currentActivity();
LOG.i("Activity:", activity.getClass().getSimpleName() + "预报弹出栈");
if (activity instanceof CatalogActivity) {
break;
}
popActivity(activity);
}
}

}

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.LightingColorFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Toast;

@SuppressLint("NewApi")
public class TemplateActivity extends Activity {

public CustomProgressDialog proDialog;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityManager.getScreenManager().pushActivity(this);

proDialog = new CustomProgressDialog(this);
proDialog.dismiss();

}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);

getWindowWidth();

}

public void StopProgress() {
if (proDialog != null)
proDialog.dismiss();
}

public void StartProgress() {
if (proDialog == null)
proDialog = new CustomProgressDialog(this);
proDialog.setCanceledOnTouchOutside(false);
proDialog.show();
}

public void showNetError() {
Toast.makeText(this, "网络连接失败,请检查当前网络配置。 ", Toast.LENGTH_SHORT).show();
}

public boolean isInternet() {
ConnectivityManager conManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = conManager.getActiveNetworkInfo();

if (networkInfo != null) {
return networkInfo.isAvailable();
}
return false;
}

public final static OnTouchListener touchLight = new OnTouchListener() {

// public final float[] BT_SELECTED = new float[] { 1, 0, 0, 0, 50, 0,
// 1,
// 0, 0, 50, 0, 0, 1, 0, 50, 0, 0, 0, 1, 0 };
public final float[] BT_NOT_SELECTED = new float[] { 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0 };

@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
v.getBackground().setColorFilter(new LightingColorFilter(0xEEEEEFF, 0xFFAA0000));
v.setBackgroundDrawable(v.getBackground());
} else if (event.getAction() == MotionEvent.ACTION_UP) {
v.getBackground().setColorFilter(new ColorMatrixColorFilter(BT_NOT_SELECTED));
v.setBackgroundDrawable(v.getBackground());
}
return false;
}
};

public boolean isWifiConnection() {
final ConnectivityManager connMgr = (ConnectivityManager) getApplicationContext().getSystemService(
Context.CONNECTIVITY_SERVICE);
final android.net.NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (wifi.isAvailable())
return true;
else
return false;
}

public boolean is3GConnection() {
final ConnectivityManager connMgr = (ConnectivityManager) getApplicationContext().getSystemService(
Context.CONNECTIVITY_SERVICE);
final android.net.NetworkInfo mobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (mobile.isAvailable())
return true;
else
return false;
}

@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
getWindowWidth();
}

public void getWindowWidth() {
DisplayMetrics DM = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(DM);
// LogUtils.i("h=" + DM.heightPixels + "w=" + DM.widthPixels);
Constance.SCREEN_DM_HIGHT = DM.heightPixels;
if (Constance.SCREEN_DM_WIDTH == 0)
Constance.SCREEN_DM_WIDTH = DM.widthPixels;
}

@Override
protected void onDestroy() {
super.onDestroy();
}

@Override
protected void onRestart() {
Log.d("AbstractTemplateActivity", "onRestart");

super.onRestart();
}

@Override
public void onLowMemory() {
Log.d("AbstractTemplateActivity", "onLowMemory");
super.onLowMemory();
}

@Override
protected void onResume() {
Log.d("AbstractTemplateActivity", "onResume");
super.onResume();
// MobclickAgent.onResume(this);
}

public void onPause() {

Log.d("AbstractTemplateActivity", "onPause");
super.onPause();
}

@Override
public void onBackPressed() {
super.onBackPressed();
ActivityManager.getScreenManager().popActivity(this);
}
}追问- - ! 这么长? 我是在学习阶段。。 能用但是不懂啊。。

追答如果你自己试着玩,怎么都行。如果你工作中采用,我给你的是比较好的选择了

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如果只有铬黑T试剂,能否测定钙离子,如何测定? 金银花茶的做法窍门 怎样制作金银花茶 怎么快速取消订单 有关"听"开头的成语 王卡看腾讯视频不显示免流 大王卡腾讯视频不显示免流 谁给推荐几部国产的好看的、卟幼稚的、新鲜的动画片 好看的、不幼稚的国产动画片有哪些? 太早的不要,要连续动画片 上传速度慢是什么原因? 苹果手机怎么修改第二次 北京到新西兰的飞机票多少钱 平安人寿颐享年年年金险有什么优缺点?贵吗? 我用原来的重新注册了一个微信,我发现里面的钱包没了,请问要怎... ...一开机就显示Your pc infected by vrb version 1.0 ?怎 Android怎么结束一个进程,我试了用 ActivityM...1 OPPO A33M 第一次刷机失败,进行救砖时,保持这个样子不懂,该怎么办,什... 微信账号和是一样吗 韩国刀具都有哪些品牌?2 形容蝴蝶声音的象声词13 没到一年时间怎么改? 改错了未满一年怎么改回来 steelheart为什么不火 没到一年怎么申请改? 校内网是大公司吗,相当于。。。?搜狐?联想?完美?久游?腾讯?甲骨文?宝洁... 开户行信息怎么查 长城砖为什么是青色的不是红色的12 用苹果手机怎么做到第二次修改 出汗皮肤粘难受是什么意思 怎么在线编辑excel文件? OPPOA33M我刷了第三方系统我想稍微官方系统为什么就是签名效验失败刷不... 微信没满一年怎么改? ...其中一位老太说,我积蓄了一辈子钱,昨天总算买了 家里才办理了电信50兆宽带,在360和电脑管家上测速都是50M网速,下载速度... 乳腺癌切除后一定要做化疗吗? 舞鑫级的舞蹈鞋磨脚吗? 一年只能改一次怎么改第二次? 微信账号和一样吗? 一吸一放的丰胸仪器有哪些 象声词形容吃东西151 请说出带有“星”和“月”的成语(如:披星戴月,追星赶月等) 白云红叶两悠悠的意思白云红叶两悠悠的意思是什么 涂口红时总是嘴唇比较靠内的地方就上不了色,形成色差,有什么方法呢 两个绑定一个手机号另一个消失怎么办? 有钱花需要什么条件才能申请通过 雅宝欧丰胸仪器用吸的是什么原理 煤炭的坩埚膨胀系数和G值,都与煤炭的粘结性有关,它们之间有公式转换吗... 两个,用一个手机号,另一个。消失不见了,怎么办? 最近在考察艺术涂料的行业,想加盟一个品牌在当地来做,不知这个行业的发... 一九年一月二十三号的火车票在、几号开始售票?16