2011-06-21 14 views
4

は、私は私のアプリに行くを取得し、多くの問題に実行しているように見える動作しない意向アンドロイド:瞬間がある時、私は私のアプリの起動時に活性を有するgrrrが...

私が持っている問題を検索すること検索可能な施設です(アンドロイドクイック検索経由)。検索機能が動作し、SearchActivityクラスが起動され、結果が表示されます。

しかし、結果アクティビティ(SearchActivity)から検索を試みると、検索ボックスがポップアップして受け入れられますが、意図はSearchActivityによって受信されないか、SearchActivityは決して起動しません...わかりません。ここで

はSearchActivityクラスは、(これは労働者階級と同じOnClickListenerを使用しています)です:

public class SearchActivity extends MapActivity implements OnGestureListener, OnDoubleTapListener { 
    public boolean touched = false; 
    private MapView mapView; 
    private MapController mapController; 
    private PlacesItemizedOverlay placesItemizedOverlay; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.main); 
     mapView = (MapView) findViewById(R.id.mapView); 

     Button searchRequest = (Button)findViewById(R.id.searchRequest); 

     searchRequest.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
      onSearchRequested(); 
      } 
     }); 

    mapView.getController(); 
    handleIntent(getIntent()); 
    } 

    @Override 
    public boolean onSearchRequested() { 
     return super.onSearchRequested(); 
    } 

    private void handleIntent(Intent intent) { 
     if (Intent.ACTION_SEARCH.equals(intent.getAction())) { 
      // handles a search query 
      String query = intent.getStringExtra(SearchManager.QUERY); 
      mapFromQuery(query); 
     } 
    } 

    @Override 
    protected boolean isRouteDisplayed() { 
    // TODO Auto-generated method stub 
    return false; 
    } 

    @Override 
    public boolean onDown(MotionEvent arg0) { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    @Override 
    public boolean onFling(MotionEvent arg0, MotionEvent arg1, float arg2, float arg3) { 
     // TODO Auto-generated method stub 
    return false; 
    } 

    @Override 
    public void onLongPress(MotionEvent arg0) { 
     // TODO Auto-generated method stub 
    } 

    @Override 
    public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2, float arg3) { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    @Override 
    public void onShowPress(MotionEvent arg0) { 
     // TODO Auto-generated method stub 
    } 

    @Override 
    public boolean onSingleTapUp(MotionEvent arg0) { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    @Override 
    public boolean onDoubleTap(MotionEvent arg0) { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    @Override 
    public boolean onDoubleTapEvent(MotionEvent e) { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    @Override 
    public boolean onSingleTapConfirmed(MotionEvent e) { 
     // TODO Auto-generated method stub 
     return false; 
    } 
} 

私は何も影響を与えているとは思わないが、私はちょうど包み、それらを含めタップのリスト。ここに私のマニフェストファイルは、次のとおりです。

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.test.android.example" 
    android:versionCode="1" 
    android:versionName="1.0"> 

    <uses-sdk android:minSdkVersion="8" /> 
    <uses-permission android:name="android.permission.INTERNET"></uses-permission> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> 

    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <uses-library android:name="com.google.android.maps" /> 

     <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.test.android.example.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.searchable" 
         android:resource="@layout/searchable"/> 
     </activity> 
    </application> 
</manifest> 

:(

+0

こんにちは、あなたのmapFromQuery関数がどのようなものかを見ることができます – CQM

答えて

11

は最後に解決策を見つけた!!

すべて追加する必要があったものは、

@Override 
public void onNewIntent(Intent intent) { 
    super.onNewIntent(intent);  
    setIntent(intent); 
    handleIntent(intent); 
} 

それはそれです! :)

+0

ありがとうございました – Ravi

0

はなぜエキストラで、通常のインテントを使用していないようなので、助けてください:?

Intent intent = new Intent(); 
intent.setClassName("yourpackage","yourpackage.youractivity"); 
intent.putExtra("Var name", yourVar); //yourVar can be any type, int, string, etc... 
startActivity(intent); 
+1

この例では、onSearchRequestedを起動すると、android.intent.action.SEARCHを起動するクイック検索ボックスを使用しています。 ()が呼び出されます。私はこの意図を編集する方法があるとは思わない、あなたはそれを導くことしかできない。あなたの提案をありがとう:) – Paul

+0

ああええ!申し訳ありません。 – CodeKrieger

関連する問題