Android意图不启动活动

时间:2011-06-22 13:15:05

标签: android android-activity android-manifest android-intent

尝试执行搜索并失败后,我尝试启动活动以显示搜索结果,但应用程序在达到意图点时崩溃:

if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
    String query = intent.getStringExtra(SearchManager.QUERY);
    Intent mapIntent = new Intent(SearchActivity.this, MapResults.class);
    mapIntent.putExtra("query", query);
    startActivity(mapIntent);
}

这是它应该启动的类:

public class MapResults extends MapActivity implements OnGestureListener, OnDoubleTapListener {
/** Called when the activity is first created. */

public String query;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

        Intent intent = getIntent();
        query = intent.getStringExtra("query");

    Toast.makeText(this, "The query: " + query, Toast.LENGTH_LONG).show();
    }

    @Override
    public boolean isRouteDisplayed() {
        return false;
    }

和清单文件:

<activity android:name=".SplashScreen"
    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=".Main">
    <intent-filter>
        <action android:name="com.example.android.test.Main" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
    <meta-data android:name="android.app.default_searchable"
               android:value=".SearchActivity" />
</activity>
<activity android:name=".SearchActivity" 
    android:launchMode="singleTop" >
    <intent-filter>
        <action android:name="android.intent.action.SEARCH" />
    </intent-filter>
    <meta-data android:name="android.app.default_searchable"
        android:value=".SearchActivity" />
    <meta-data android:name="android.app.searchable"
        android:resource="@layout/searchable"/>
</activity>
<activity android:name=".MapResults">
    <intent-filter>
        <action android:name="com.example.android.test.MapResults"       
            android:label="@string/map_results_title"/>
    </intent-filter>
    <meta-data android:name="android.app.default_searchable"
        android:value=".SearchActivity" />
</activity>

我知道在MapResults类中,它目前没有启动地图,只是显示文本,但这只是在我尝试从意图中接收数据的时候。

任何想法,因为我被卡住了!

3 个答案:

答案 0 :(得分:0)

在MapResults类中,行:

Toast.makeText(this, "The query: " + query, Toast.LENGTH_LONG).show();
当您连接一个空字符串时,

将创建一个NullPointerException。此时您的数据成员查询为空,您应该具有以下内容:

query = intent.getStringExtra( "query" );
Toast.makeText(this, "The query: " + query, Toast.LENGTH_LONG).show();

否则,您使用意图传输数据的机制对我来说似乎没问题。

此致  斯特凡

答案 1 :(得分:0)

我在代码中可以看到的唯一问题是 intent 变量为null,因此它在intent.getAction()

上崩溃

up:没有注意到MapActivity代码 - 如果在Toast时没有初始化变量查询 - 是的,这是第二个问题

答案 2 :(得分:0)

<intent-filter>
    <action android:name="com.example.android.test.Main" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

你可以将DEFAULT更改为LAUNCHER吗? 试一试