Android - Intent.putExtra() 失败

标签 android android-activity android-intent manifest bundle

我似乎无法获得与 Intent 一起发送的额外信息。 Intent 正确加载下一个 Activity ,但没有负载。

来电者:

  //a list item was clicked
  protected void onListItemClick(ListView l, View v, int position, long id)
  {
    super.onListItemClick(l, v, position, id);

    Intent i = new Intent(this, ProgramTracks.class);

    i.putExtra("_id", id);

    startActivity(i);
  }

接收者:

  protected void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.program_tracks);

    if( savedInstanceState != null )
    {
      mDateId = savedInstanceState != null ? savedInstanceState.getLong("_id") : null;

      Toast.makeText(this, "ID " + mDateId, Toast.LENGTH_SHORT).show();
    }
    else
    {
      Toast.makeText(this, "Null!", Toast.LENGTH_SHORT).show();
    }    
  }

list :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.site.android.app"
    android:versionCode="1" android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MainActivity" android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".ProgramTracks" android:label="@string/app_name">
        </activity>
    </application>
</manifest>

我不确定我错过了什么,但我的 if 保持 Toasting 为空。

编辑:如果我 Toast 或 Log 得到 putExtra()id 变量,它就被设置了。

最佳答案

在您的原始 Activity 中,您将“_id”作为您的 Intent 的额外内容,但在第二个 Activity 中,您试图从 savedInstanceState 中检索 long。

相反,你应该这样做:

Intent myIntent = getIntent();
Long id = myIntent.getLongExtra("_id", 0);

如果没有找到带标签“_id”的 long,默认值为 0。

这是 another question关于从 savedInstanceState 和 Intents 获取额外信息的区别。

这是 developer page关于在 Intents 中放置/获取额外内容。

关于Android - Intent.putExtra() 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6469773/

相关文章:

android - 将一个 mutableList 从 Activity A 传递到 Kotlin 中的 Activity B。

Android 小部件点击和广播接收器不工作

java - Android,如何在 OnClick 中从 TextView 获取文本

java - Android Studio 事件监听器之谜(给我)(setOnClickEventListener)

java - 将 fragment Activity 上下文传递给自定义 ListView 适配器

java - 向 Activity 发送包数据的 Android 服务为 NULL

Android 将字符串转换为日期

java - 如果调用取消或停止相同的功能,然后重新开始(如果当前在 Android 中运行)

java - 如何在android中使用没有id的Fragment?

android - 获取有关 PendingIntent 的 Intent 的详细信息