簡體   English   中英

Android意向未啟動活動

[英]Android intent not launching activity

嘗試執行搜索並失敗后,我試圖啟動一個活動以顯示搜索結果,但是當應用程序到達意圖點時,它崩潰了:

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類中,它目前不啟動地圖,它只是顯示文本,但這只是在我試圖從意圖中接收數據時。

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

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

您可以將DEFAULT更改為LAUNCHER嗎? 去嘗試一下

在您的MapResults類中,該行:

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

當您串聯空字符串時,將創建NullPointerException。 您的數據成員查詢此時為null,您應該具有以下內容:

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

否則,您使用意圖傳輸數據的機制在我看來似乎還不錯。

問候,斯特凡

我在代碼中看到的唯一問題是您的intent變量為null,因此在intent.getAction()上崩潰

上:尚未注意到MapActivity代碼-如果在Toast時未初始化變量查詢 -是的,這是第二個問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM