我使用intent.putExtras
发送值,但我在下一个活动中获取空值。这是我的意图代码
if (id == R.id.save_times) {
Intent intent = new Intent(AlertTimerSelector.this, Dashboard.class);
intent.putExtra(AppHelper.LOW_LEVEL, dialogHelper.getPicker_value1());
Log.d("AlertTimer", "onOptionsItemSelected: " + dialogHelper.getPicker_value1());
intent.putExtra(AppHelper.MEDIUM_LEVEL, dialogHelper.getPicker_value2());
Log.d("AlertTimer", "onOptionsItemSelected: " + dialogHelper.getPicker_value2());
intent.putExtra(AppHelper.HIGH_LEVEL, dialogHelper.getPicker_value3());
Log.d("AlertTimer", "onOptionsItemSelected: " + dialogHelper.getPicker_value3());
intent.putExtra(AppHelper.ALERT_TIME_ID_TEXT,AppHelper.ALERT_TIME_ID);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
finish();
return true;
}
这是我的下一个活动代码,我在onNewIntent
@Override
protected void onNewIntent(Intent intent) {
Bundle bundle=getIntent().getExtras();
if (bundle.getString(AppHelper.ALERT_TIME_ID_TEXT).equals(AppHelper.ALERT_TIME_ID)){
low_level_time=bundle.getString(AppHelper.LOW_LEVEL);
medium_level_time=bundle.getString(AppHelper.MEDIUM_LEVEL);
high_level_time=bundle.getString(AppHelper.HIGH_LEVEL);
}
if (bundle.get(AppHelper.SLEEP_TIME_ID_TEXT).equals(AppHelper.SLEEP_ID)){
sleep_time_hrs=bundle.getString(AppHelper.SLEEP_TIME_HOURS);
sleep_time_mins=bundle.getString(AppHelper.SLEEP_TIME_MINUTES);
wakeup_time_hrs=bundle.getString(AppHelper.WAKEUP_TIME_HOURS);
wakeup_time_mins=bundle.getString(AppHelper.WAKEUP_TIME_MINUTES);
}
Log.d(TAG, "onNewIntent: "+bundle.toString());
super.onNewIntent(intent);
}
请帮我解决这个问题。谢谢
onNewIntent没有被调用。我不知道为什么?
答案 0 :(得分:1)
首先,使用getIntent()方法获取已开始活动的意图:
Intent intent = getIntent();
如果您的额外数据表示为字符串,则可以使用intent.getStringExtra(String name)方法。在你的情况下:
String id = intent.getStringExtra(AppHelper.LOW_LEVEL);
答案 1 :(得分:0)
试试这个:
Intent intent=getIntent();
if(intent!=null)
{
low_level_time=intent.getStringExtra(AppHelper.LOW_LEVEL);
//other values like above..
}
答案 2 :(得分:0)
您必须以int qsort_strcmp(const void* a, const void* b) {
return strcmp(*(const char**)(a), *(const char**)(b));
}
// ...
qsort(environ, sz, sizeof(char*), qsort_strcmp);
方式获取您的数据,例如
onCreate
当您尝试启动启动模式等于String myString = getIntent().getStringExtra(AppHelper.LOW_LEVEL);
(或以编程方式设置)的相同活动时,会调用 OnNewIntent
了解更多信息read this doc
答案 3 :(得分:0)
onNewIntent()。由于您在活动中使用3个标志,因此可能存在一些问题。仅使用 FLAG_ACTIVITY_SINGLE_TOP 并尝试。
或
将检索代码的值移至 onCreate 并尝试。
答案 4 :(得分:0)
您接收意图的活动,在该活动下的清单文件中添加标记
android:launchMode="singleTop"