我正在尝试从小部件启动我的主要活动,但也发送意图内容。我试图这样做的原因是为了从Main Activity中启动一个特定的方法(即语音登录)。在这里,我刚刚为测试目的创建了一个Toast。所以,在widget代码中我只是这样做:
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();
但没有出现。当我调用辅助活动并分别从中接收意图内容时,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 :(得分:0)
嘿,在小部件中尝试这个
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");
}
所以你可以检查它是否为空 并且在我的小部件中它正常工作
答案 1 :(得分:0)
我刚刚找到了解决方案。似乎问题在于我的主要活动收到的多个意图。我显然读了那些错误的意图,因此是NULL值。我开始开始如何使每个意图独特,但它似乎只是一小部分
intent.setAction("my action");
在意图创建中诀窍,我猜它在LogInActivity接收时给予了优先权?我不太确定,但至少我得阅读内容。