2012-08-06 32 views
1

我想从一个小部件启动我的主要活动,但也发送意图内容。我试图这样做的原因是为了从主要活动(即语音登录)中启动特定的方法。在这里,我只是为了测试目的而创建了Toast。所以,小部件代码里面我简单地做:无法使用意图内容从Android中的窗口小部件启动主要活动?

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); 

和我的主(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(); 

,但没有显示出来。当我调用次要活动并分别接收来自它的意图内容时,EXACT相同的片段起作用。任何关于如何从我的主要活动中读取意图内容的想法,或者至少有人告诉我这是不可能的,所以我应该找到另一个实现,这是非常值得赞赏的。

编辑:添加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(); 
+0

你在吐司上得到一个空指针吗?你能否展示你的辅助活动及其各自清单条目的工作内容。 – 2012-08-06 10:00:34

+0

我从吐司中得到空字符串。 但是,自从我意识到我的飞溅活动是我的主要活动之后,您就有所帮助。尽管如此,问题仍然存在,为什么它不能从意图中读取内容? 您希望我如何向您展示次要活动的工作?也许这些方法的列表应该有所帮助? 另外,感谢您的时间! P.s.我编辑了我上面的问题。 – Ore 2012-08-06 10:21:07

回答

0

我刚找到解决方案。看来问题出在我主要活动收到的多重意图上。我显然读了这些错误的意图,因此NULL值。我开始做起如何让每一个意图独一无二的,但它似乎是仅仅

intent.setAction("my action"); 

的意图创造一个小行做的伎俩,我想通过LogInActivity收到时给它的优先级?我不太确定,但至少我必须阅读内容。

0

嘿在widget

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"); 
} 

这样你就可以检查它是否是空或不是 和我的小部件它的正常工作btw

+0

INDEX NULL,它来自LogInActivity。 来自TransactionActivity的INDEX 1。 – Ore 2012-08-06 10:28:14

+0

什么是LogInActivity类的访问属性?private? 或者您可以通过电子邮件向我发送完整的源代码吗? – 2012-08-07 07:33:20

+0

感谢您的关注。但是我刚刚找到了解决方案。看来问题出在我主要活动收到的多重意图上。我显然读了这些错误的意图,因此NULL值。 意图的一小行 。setAction(“我的动作”);在意图创造 作出了诀窍,我想它主要活动收到时给它优先。 – Ore 2012-08-07 10:25:59

相关问题