android 启动另外一个activity,起动另外一个activity只能在activity里面启动吗
啟動(dòng)另外一個(gè)activity只能在activity里面啟動(dòng)嗎
有沒有別的方法可以在普通的java類里啟動(dòng)
------解決思路----------------------
別的方法是沒辦法的.不過你可以試試用java反射的方式?看能否啟動(dòng)起來
------解決思路----------------------
引用:Quote: 引用:普通的java類里??Context?哪里來呢我都說了用別的方法
各種Start........Activity、service、廣播等等,都封裝在繼承自Context抽象類的ContextImpl里,普通的java類,貌似不行吧.
------解決思路----------------------
class?ContextImpl?extends?Context?{
//整個(gè)App的主線程
final?ActivityThread?mMainThread;
//整個(gè)App的相關(guān)信息
final?LoadedApk?mPackageInfo;
//資源解析器
private?final?ResourcesManager?mResourcesManager;
//App資源類
private?final?Resources?mResources;
//外部Context的引用
private?Context?mOuterContext;
//默認(rèn)主題
private?int?mThemeResource?=?0;
private?Resources.Theme?mTheme?=?null;
//包管理器
private?PackageManager?mPackageManager;
................................
//以下是靜態(tài)區(qū)注冊(cè)系統(tǒng)的各種服務(wù),多大五六十種系統(tǒng)服務(wù),因此每個(gè)持有Context引用的對(duì)象都可以隨時(shí)通過getSystemService方法來輕松獲取系統(tǒng)服務(wù)。
static?{
registerService(ACCESSIBILITY_SERVICE,?new?ServiceFetcher()?{
public?Object?getService(ContextImpl?ctx)?{
return?AccessibilityManager.getInstance(ctx);
}});
registerService(CAPTIONING_SERVICE,?new?ServiceFetcher()?{
public?Object?getService(ContextImpl?ctx)?{
return?new?CaptioningManager(ctx);
}});
registerService(ACCOUNT_SERVICE,?new?ServiceFetcher()?{
public?Object?createService(ContextImpl?ctx)?{
IBinder?b?=?ServiceManager.getService(ACCOUNT_SERVICE);
IAccountManager?service?=?IAccountManager.Stub.asInterface(b);
return?new?AccountManager(ctx,?service);
}});
........................
}
.................
//啟動(dòng)Activity的地方
@Override
public?void?startActivity(Intent?intent,?Bundle?options)?{
warnIfCallingFromSystemProcess();
if?((intent.getFlags()&Intent.FLAG_ACTIVITY_NEW_TASK)?==?0)?{
throw?new?AndroidRuntimeException(
"Calling?startActivity()?from?outside?of?an?Activity?"
+?"?context?requires?the?FLAG_ACTIVITY_NEW_TASK?flag."
+?"?Is?this?really?what?you?want?");
}
mMainThread.getInstrumentation().execStartActivity(
getOuterContext(),?mMainThread.getApplicationThread(),?null,
(Activity)null,?intent,?-1,?options);
}
..........
//啟動(dòng)服務(wù)的地方
@Override
public?ComponentName?startService(Intent?service)?{
warnIfCallingFromSystemProcess();
return?startServiceCommon(service,?mUser);
}
...............
}
------解決思路----------------------
把Context作為參數(shù)傳到普通類里啊
------解決思路----------------------
引用:
把Context作為參數(shù)傳到普通類里啊
我覺得樓主新建一個(gè)類想做點(diǎn)其他操作
------解決思路----------------------
可以將Activity當(dāng)做參數(shù)傳給普通的java類。
比如當(dāng)前activity叫?MainActivity。有一個(gè)類叫Test.。那么給他寫一個(gè)構(gòu)造方法?Test(Context?context)
使用時(shí)這樣,Test?t?=?new?Test(MainActivity.this);
ok?。在Test中你就可以用Intent開啟新的activity了
------解決思路----------------------
引用:可以將Activity當(dāng)做參數(shù)傳給普通的java類。
比如當(dāng)前activity叫?MainActivity。有一個(gè)類叫Test.。那么給他寫一個(gè)構(gòu)造方法?Test(Context?context)
使用時(shí)這樣,Test?t?=?new?Test(MainActivity.this);
ok?。在Test中你就可以用Intent開啟新的activity了
可行,實(shí)例化普通類的時(shí)候把mContext傳遞進(jìn)去,我也這么寫過
總結(jié)
以上是生活随笔為你收集整理的android 启动另外一个activity,起动另外一个activity只能在activity里面启动吗的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 长空之王试飞烈士公墓在哪
- 下一篇: 坦克300尾门踏板可以承受多少kg