在基于 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】:

这里有一个想法可以帮助您入门。传递启动SubActivityIntent 并告诉它是哪个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 应用程序中,如何找到启动意图的特定按钮?的主要内容,如果未能解决你的问题,请参考以下文章

项目实战基于Pthon+PyQt5的GUI点名程序(附完整源码)

结对作业1----基于GUI的四则运算生成器

结对作业1----基于GUI的四则运算生成器

基于MATLAB GUI的魔方三维动态还原仿真程序

郁闷于Python GUI开发,有没有好的框架

基于MATLAB GUI的魔方三维动态还原仿真程序