2012-08-06 34 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

相關問題