【问题标题】:Not able to start Main Activity from widget in Android with intent contents?无法从带有意图内容的 Android 小部件启动 Main Activity?
【发布时间】:2012-08-06 09:54:13
【问题描述】:

我正在尝试从小部件启动我的主要活动,但也发送意图内容。我尝试这样做的原因是为了从 Main Activity 中启动特定方法(即语音登录)。在这里,我刚刚创建了一个 Toast 用于测试目的。所以,在小部件代码中我只是这样做:

Intent intent = new Intent(context, LogInActivity.class);

intent.putExtra("button_clicked","hello");
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
// Get the layout for the App Widget and attach an on-click listener
// to the button
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
views.setOnClickPendingIntent(R.id.imageButton1, pendingIntent);

在我的 Main (LogInActivity) 中我这样做:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    Intent myIntent = getIntent();

    Toast.makeText(getApplicationContext(),
            myIntent.getStringExtra("button_clicked"),
            Toast.LENGTH_SHORT)
            .show();

但什么也没有出现。当我调用辅助活动并分别从中接收意图内容时,完全相同的 sn-p 工作。关于如何从我的主要活动中读取意图内容的任何想法,或者至少有人告诉我这是不可能的,所以我应该找到另一个实现,非常感谢。

编辑:添加 Android 清单条目和辅助活动详细信息

<activity
    android:name="SplashActivity"
    android:label="@string/app_name"
    android:screenOrientation="portrait">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
<activity android:name=".LogInActivity"
          android:label="@string/title_activity_login"
          android:screenOrientation="portrait">
</activity>
<activity android:name=".TransactionActivity"
          android:label="@string/title_activity_transaction"
          android:screenOrientation="portrait">
</activity>

在我的辅助活动中,我只是在开始时调用了相同的脚本,我相信其余的代码应该不会影响这一点。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_transaction);

    Intent myIntent = getIntent();
    Toast.makeText(getApplicationContext(),
            myIntent.getStringExtra("button_clicked"),
            Toast.LENGTH_SHORT)
            .show();

【问题讨论】:

  • 吐司上是否有空指针?您能否展示您的辅助活动中的工作内容及其各自的清单条目。
  • 我从吐司中得到空字符串。但是,您提供了帮助,因为我意识到我的启动活动是我的主要活动。尽管如此,问题仍然存在,为什么它不能从意图中读取内容?您希望我如何向您展示次要活动的工作?也许方法列表应该有帮助?另外,感谢您的宝贵时间!附:我在上面编辑了我的问题..

标签: android android-intent android-widget


【解决方案1】:

嘿,在小部件中试试这个

Intent i = new Intent(context, top.class);
i.putExtra("widget", "1");
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, i, 0);
views.setOnClickPendingIntent(R.id.imagebutton, pendingIntent);

这在主要活动中

if(getIntent().getStringExtra("widget")!=null)
{
Log.i("INDEX", getIntent().getStringExtra("widget"));
widget = Integer.parseInt(getIntent().getStringExtra("widget"));
}
else
{
 Log.i("INDEX", "NULL");
}

所以你可以检查它是否为空 顺便说一句,在我的小部件中它工作正常

【讨论】:

  • INDEX NULL,它来自 LogInActivity。来自 TransactionActivity 的索引 1。
  • LogInActivity 类的访问属性是什么?private?或者你能把你的完整源代码发邮件给我吗?
  • 感谢您的关注。但是我刚刚找到了解决方案。似乎问题在于我的主要活动收到的多个意图。我显然读到了那些错误的意图,因此是 NULL 值。一小行 intent.setAction("my action");在意图创建中取得了成功,我猜它在被主要活动接收时给予了优先权。
  • 啊!这也可能是问题所在,祝你的项目好运!
【解决方案2】:

我刚刚找到了解决方案。似乎问题在于我的主要活动收到的多个意图。我显然读到了那些错误的意图,因此是 NULL 值。我开始着手如何让每个意图都独一无二,但似乎只是一小行

intent.setAction("my action");

在意图创建中取得了成功,我猜它在被 LogInActivity 接收时给予了优先权?我不太确定,但至少我毕竟读过内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多