0

嘗試進行搜索後,並沒有,我試圖發起一個活動來顯示從搜索結果中,但是當它到達目的點的應用程序崩潰:Android的意圖不開展活動

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

任何想法,因爲我卡住了!

+1

我們需要崩潰的堆棧跟蹤。你的代碼看起來沒問題。 – Snicolas

回答

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(); 

否則,你的機制傳遞使用意圖的數據似乎好了我。

問候, 斯特凡

+0

謝謝Stephane,因爲想念這個而感到很蠢。但不幸的是,它仍然崩潰:(謝謝你的輸入) – Paul

+0

我們需要崩潰的堆棧跟蹤 – Snicolas

0

唯一的問題,我可以在代碼中看到的是你的意圖變量爲空,所以它崩潰的intent.getAction()

起來:沒有注意到MapActivity碼 - 如果變量查詢沒有在敬酒的那一刻初始化 - 是的,這是第二個問題

+0

intent.getAction()當前正在返回數據,實際上發送intent的時間點一切正常。改變查詢變量,使其在寫文本時不爲空由於某種原因,它不會啓動類:S – Paul

+0

因此,我認爲它不會崩潰,問題是MapResults活動未啓動? –

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

可你ç對發射機的默認值爲何? 試試吧