Android:关于意图的错误论据

时间:2014-04-09 15:09:49

标签: java android android-intent

我在使用Android的Intent对象时遇到了问题。

我基本上是在尝试推出另一项活动:

My Activity,MapActivity使用MapEventListener,它提供了基于MapActivty Activity中呈现的地图来侦听事件的函数。如果在地图上按下标记,则启动MapEventListener的功能。

我这个函数我正在尝试实现一个启动另一个激活的Intent对象。

这是函数的代码:

@Override
public void onVectorElementClicked(VectorElement arg0, double arg1,
        double arg2, boolean arg3) {

    Intent intent = new Intent(MapActivity.this, DetailPerspectiveActivity.class);
    activity.startActivity(intent);


}

这是清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.hsrw.landschaftsbilder"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="9"
    android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/><application android:icon="@drawable/icon" android:label="@string/app_name" android:allowBackup="false">
    <activity android:name=".activities.MapActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>            
    </activity>
    <activity android:name=".activities.GraphhopperRouteTestActivity">
    </activity>
    <activity android:name=".activities.DetailPerspectiveActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
        </activity>
</application>

我很确定问题是关于“MapActivity.this”但如果我将其更改为MapActivity.this在清单中代码仍然无法编译。这就是eclipse关于第一个论点的说法:

在范围

中无法访问MapActivity类型的封闭实例

提前致谢!

2 个答案:

答案 0 :(得分:0)

在您的活动中,尝试将Intent intent = new Intent(.activities.MapActivity.this, .activities.DetailPerspectiveActivity.class);更改为Intent intent = new Intent(MapActivity.this, DetailPerspectiveActivity.class);(即MapActivity和DetailPerspectiveActivity)。

答案 1 :(得分:0)

您的manifest.xml文件包含问题。你已宣布两个活动作为启动器,这将无法正常工作

修改manifest.xml代码如下。

  

而不是关注

<activity android:name=".activities.MapActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>            
</activity>
<activity android:name=".activities.GraphhopperRouteTestActivity">
</activity>
<activity android:name=".activities.DetailPerspectiveActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
    </activity>
  

使用以下代码

<activity android:name=".activities.MapActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>            
</activity>
<activity android:name=".activities.GraphhopperRouteTestActivity">
</activity>
<activity android:name=".activities.DetailPerspectiveActivity">
</activity>

修改: 这行在您的代码中起什么作用。

 Intent intent = new Intent(.activities.MapActivity.this, .activities.DetailPerspectiveActivity.class);

通常采用以下方式

 Intent intent = new Intent(FIRST_ACTIVITY.this, SECOND_ACTIVITY.class);

在你的情况下,我认为它应该是

 Intent intent = new Intent(MapActivity.this, DetailPerspectiveActivity.class);