Android намерение не запускать деятельность - PullRequest
0 голосов
/ 22 июня 2011

После попытки поиска и сбоя я пытаюсь запустить действие, чтобы отобразить результаты поиска, но приложение падает, когда оно достигает точки намерения:

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 голосов
/ 22 июня 2011

Единственная проблема, которую я вижу в коде, это то, что ваша переменная intent имеет значение null, поэтому происходит сбой функции intent.getAction ()

up: не заметил код MapActivity - если переменная запрос не инициализируется в момент Toast - да, это вторая проблема

0 голосов
/ 20 марта 2013
<intent-filter>
    <action android:name="com.example.android.test.Main" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

Вы можете изменить DEFAULT на LAUNCHER? просто попробуйте

0 голосов
/ 22 июня 2011

В вашем классе 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();

В противном случае, ваш механизм передачи данных с использованием интентов мне подходит.

С уважением, Stéphane

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...