在基于 GUI 的 Android 应用程序中,如何找到启动意图的特定按钮?
Posted
技术标签:
【中文标题】在基于 GUI 的 Android 应用程序中,如何找到启动意图的特定按钮?【英文标题】:In a GUI-based Android app, how can I find the particular button press which launched an intent? 【发布时间】:2012-03-12 00:56:01 【问题描述】:我可以访问正在运行的应用程序的完整 logcat/DDMS 输出以及源代码。
如果我看到类似的东西(取自 OpenSudoku)
03-11 20:38:28.110: I/ActivityManager(175): Starting: Intent cmp=cz.romario.opensudoku/.gui.SudokuListActivity (has extras) from pid 20367
我如何才能(从意图信息)找出是什么启动了该特定意图。我知道cmp=
告诉了启动了哪个活动,并且从该信息中我可以找到该特定活动的java源文件,但我想在(我认为)布局中找到哪个按钮或操作调用了那个活动,因此创建了意图。
应该注意的是,我能够查看何时按下特定按钮,但我希望能够确认此意图与所述按钮按下有关。
【问题讨论】:
【参考方案1】:这里有一个想法可以帮助您入门。传递启动SubActivity
的Intent
并告诉它是哪个Button
启动的。
final Intent intent = new Intent(BaseActivity.this, SubActivity.class);
intent.putExtra("LaunchingButton", R.id.button1);
startActivity(intent);
在您启动的活动的onCreate
方法中检索信息:
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.sub_activity_layout);
Intent data = getIntent();
int from = data.getExtras().getInt("LaunchingButton");
switch (from)
case R.id.button1:
/* button1 launched the Activity */
break;
换句话说,您可以将被按下的Button
的ID 传递给Intent
,然后在启动的活动中,检索此信息并切换可能已启动的View
id那个特定的活动。
【讨论】:
谢谢,这是个好主意!不幸的是,我认为我无法修改正在运行的应用程序的源代码。这意味着作为最终产品的一个组件,将在未修改状态下测试应用程序。 嗯...我有点不清楚您现在到底要做什么。你问的问题从来没有提到分析一些预先存在的应用程序......这就是你想要做的吗? 是的,我的项目是android GUITAR 软件sourceforge.net/apps/mediawiki/guitar/… 的扩展,旨在测试Android 应用程序的GUI。该项目旨在实现一种跟踪在 GUI 交互期间创建的意图的方法。以上是关于在基于 GUI 的 Android 应用程序中,如何找到启动意图的特定按钮?的主要内容,如果未能解决你的问题,请参考以下文章