android獲取當前activity
『壹』 android開發問題:如何在當前Acitivity中用代碼獲取上一個Activity名稱
需要在跳轉的Intent對象中添加一個參數:
java">intent.putExtra("comeFrom",activityName);
跳轉到目標activity時帶上當前activity的名字,這樣才知道是從哪裡跳轉進來的。
『貳』 android怎麼樣獲取當前activity下所有的textview控制項
把設置的方法放在一個方法裡面,然後把Id當做參數傳進去,比如R.id.text1的話,可以這樣用一個變數String
baseId="R.id.",這個方法可以寫成setConfig(String
strId){String
currentId=baseId+strId;
//後面的代碼按下面來
}
然後再用下面的方法
public
static
int
getResourdIdByResourdName(Context
context,
String
ResName){
int
resourceId
=
0;
try
{
Field
field
=
R.drawable.class.getField(ResName);
field.setAccessible(true);
try
{
resourceId
=
field.getInt(null);
}
catch
(IllegalArgumentException
e)
{
log.showLogDebug("IllegalArgumentException:"
+
e.toString());
}
catch
(IllegalAccessException
e)
{
log.showLogDebug("IllegalAccessException:"
+
e.toString());
}
}
catch
(NoSuchFieldException
e)
{
log.showLogDebug("NoSuchFieldException:"
+
e.toString());
}
return
resourceId;
}將currentId作為參數傳入就可以了,這時在調用findViewById找,,,
採納啊,大哥,寫了這么多
『叄』 android 如何判斷當前是哪個activity
當前的Activity只會有一個的
首先要知道Activity的四種狀態:
Active/Runing 一個新 Activity 啟動入棧後,它在屏幕最前端,處於棧的最頂端,此時它處於可見並可和用戶交互的激活狀態。
Paused 當 Activity 被另一個透明或者 Dialog 樣式的 Activity 覆蓋時的狀態。此時它依然與窗口管理器保持連接,系統繼續維護其內部狀態,所以它仍然可見,但它已經失去了焦點故不可與用戶交互。
Stoped 當 Activity 被另外一個 Activity 覆蓋、失去焦點並不可見時處於 Stoped 狀態。
Killed Activity 被系統殺死回收或者沒有被啟動時處於 Killed 狀態。
protected void onStart() 該方法在 onCreate() 方法之後被調用,或者在 Activity 從 Stop 狀態轉換為 Active 狀態時被調用,一般執行了onStart()後就執行onResume()。
protected void onResume() 在 Activity 從 Pause 狀態轉換到 Active 狀態時被調用。
『肆』 Android如何獲取當前窗口的對象判斷它是Activity的類對象還是Dialog的類對象
您說具體點,什麼情況下獲取當前窗口的對象。
如果是在一個activity里獲取dialog彈出來沒有就是if(dialog!=null&&dialog.isshowing){//就是當前窗口是dialog界面 dialog.this就是當前窗口對象}
eles{//是當前activity 為窗口對象, activity.this}
『伍』 安卓自動化測試怎麼獲取當前正在運行activity
android開發中獲取當前的Activity有多種情況; 在Activity中,this就是當前的Activity,例如this.startActivity。 在Fragment中可以通過 getActivity()來得到當前裝載這個Fragment的Activity。 通過Activity堆棧來獲取當前顯示的這個ActivityAc。詳細的可以看看安卓巴士教程:http://www.apkbus.com/thread-462912-1-1.html
『陸』 android 如何獲得當前activity
你的activity.this。
『柒』 android 如何獲取手機當前的Activity實例
獲取activity實例有兩種辦法:
1、通過context來獲取,簡單方便:
private String getRunningActivityName() {
String contextString = context.toString();
return contextString.substring(contextString.lastIndexOf(".") + 1, contextString.indexOf("@"));
}
2、通過特定許可權獲取
<uses-permission android:name="android.permission.GET_TASKS" />
private String getRunningActivityName(){
ActivityManager activityManager=(ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
String runningActivity=activityManager.getRunningTasks(1).get(0).topActivity.getClassName();
return runningActivity;
}
『捌』 android 獲取所有正在運行的activity
首先是新建一個Android工程,然後修改【main.xml】文件如下:
添加一個ListView
[html] view plain
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/tasklist"
/>
</LinearLayout>
然後編輯【java代碼】
[java] view plain
package com.cayden.run;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningTaskInfo;
import android.content.Context;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
public class MyActivityRunDemo extends Activity {
private ListView tasklist=null;
private ListAdapter adapter=null;
private List<String> all=new ArrayList<String>();
private ActivityManager activityManager=null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tasklist=(ListView)this.findViewById(R.id.tasklist);
activityManager=(ActivityManager)super.getSystemService(Context.ACTIVITY_SERVICE);
listActivity();
}
public void listActivity(){
List<RunningTaskInfo> tasks= activityManager.getRunningTasks(30);
Iterator<RunningTaskInfo> itInfo=tasks.iterator();
while(itInfo.hasNext()){
RunningTaskInfo info=itInfo.next();
all.add("【id="+info.id+"】,"+info.baseActivity.getClassName());
}
adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,this.all);
tasklist.setAdapter(adapter);
}
}
最後需要再配置所需要的許可權【AndroidManifest.xml】
[html] view plain
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.cayden.run"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MyActivityRunDemo"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.GET_TASKS"></uses-permission>
</manifest>
程序運行效果如圖所示:
『玖』 如何獲取當前界面activity
獲取activity實例有兩種辦法:
1、通過context來獲取,簡單方便:
private String getRunningActivityName() {
String contextString = context.toString();
return contextString.substring(contextString.lastIndexOf(".") + 1, contextString.indexOf("@"));
}
2、通過特定許可權獲取
<uses-permission android:name="android.permission.GET_TASKS" />
private String getRunningActivityName(){
ActivityManager activityManager=(ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
String runningActivity=activityManager.getRunningTasks(1).get(0).topActivity.getClassName();
return runningActivity;
}
『拾』 android 如何獲取當前界面最上面的activity
在Android系統中,Activity窗口的大小是由WindowManagerService服務來計算的。WindowManagerService服務會根據屏幕及其裝飾區的大小來決定Activity窗口的大小。一個Activity窗口只有知道自己的大小之後,才能對它裡面的UI元素進行測量、布局以及繪制。本文將詳細分析WindowManagerService服務計算Activity窗口大小的過程。
一般來說,Activity窗口的大小等於整個屏幕的大小,但是它並不佔據著整塊屏幕。為了理解這一點,我們首先分析一下Activity窗口的區域是如何劃分的。
我們知道,Activity窗口的上方一般會有一個狀態欄,用來顯示3G信號、電量使用等圖標,如圖1所示。
圖1 Activity窗口的Content區域示意圖
從Activity窗口剔除掉狀態欄所佔用的區域之後,所得到的區域就稱為內容區域(Content Region)。顧名思義,內容區域就是用來顯示Activity窗口的內容的。我們再抽象一下,假設Activity窗口的四周都有一塊類似狀態欄的區域,那麼將這些區域剔除之後,得到中間的那一塊區域就稱為內容區域,而被剔除出來的區域所組成的區域就稱為內容邊襯區域(Content Insets)。Activity窗口的內容邊襯區域可以用一個四元組(content-left, content-top, content-right, content-bottom)來描述,其中,content-left、content-right、content-top、content-bottom分別用來描述內容區域與窗口區域的左右上下邊界距離。
我們還知道,Activity窗口有時候需要顯示輸入法窗口,如圖2所示。
圖2 Activity窗口的Visible區域示意圖
這時候Activity窗口的內容區域的大小有可能沒有發生變化,這取決於它的Soft Input Mode。我們假設Activity窗口的內容區域沒有發生變化,但是它在底部的一些區域被輸入法窗口遮擋了,即它在底部的一些內容是不可見的。從Activity窗口剔除掉狀態欄和輸入法窗口所佔用的區域之後,所得到的區域就稱為可見區域(Visible Region)。同樣,我們再抽象一下,假設Activity窗口的四周都有一塊類似狀態欄和輸入法窗口的區域,那麼將這些區域剔除之後,得到中間的那一塊區域就稱為可見區域,而被剔除出來的區域所組成的區域就稱為可見邊襯區域(Visible Insets)。Activity窗口的可見邊襯區域可以用一個四元組(visible-left, visible-top, visible-right, visible-bottom)來描述,其中,visible-left、visible-right、visible-top、visible-bottom分別用來描述可見區域與窗口區域的左右上下邊界距離。
在大多數情況下,Activity窗口的內容區域和可見區域的大小是一致的,而狀態欄和輸入法窗口所佔用的區域又稱為屏幕裝飾區。理解了這些概念之後,我們就可以推斷,WindowManagerService服務實際上就是需要根據屏幕以及可能出現的狀態欄和輸入法窗口的大小來計算出Activity窗口的整體大小及其內容區域邊襯和可見區域邊襯的大小。有了這三個數據之後,Activity窗口就可以對它裡面的UI元素進行測量、布局以及繪制等操作了。
從前面Android應用程序窗口(Activity)的繪圖表面(Surface)的創建過程分析一文可以知道,應用程序進程是從ViewRoot類的成員函數performTraversals開始,向WindowManagerService服務請求計算一個Activity窗口的大小的,因此,接下來我們就從ViewRoot類的成員函數performTraversals開始分析一個Activity窗口大小的計算過程,如圖3所示。
圖3 Activity窗口大小的計算過程
這個過程可以分為11個步驟,接下來我們就詳細分析每一個步驟。
Step 1. ViewRoot.performTraversals
這個函數定義在文件frameworks/base/core/java/android/view/ViewRoot.java中,它的實現很復雜,一共有600-行,不過大部分代碼都是用來計算Activity窗口的大小的,我們分段來閱讀:
[java] view plainpublic final class ViewRoot extends Handler implements
ViewParent,
View.AttachInfo.Callbacks {
......
private void performTraversals() {
......
final View host = mView;
......
int desiredWindowWidth;
int desiredWindowHeight;
int childWidthMeasureSpec;
int childHeightMeasureSpec;
......
Rect frame = mWinFrame;
if (mFirst) {
......
DisplayMetrics packageMetrics =
mView.getContext().getResources().getDisplayMetrics();
desiredWindowWidth = packageMetrics.widthPixels;
desiredWindowHeight = packageMetrics.heightPixels;
} else {
desiredWindowWidth = frame.width();
desiredWindowHeight = frame.height();
if (desiredWindowWidth != mWidth || desiredWindowHeight != mHeight) {
......
windowResizesToFitContent = true;
}
}
復制代碼
這段代碼用來獲得Activity窗口的當前寬度desiredWindowWidth和當前高度desiredWindowHeight。