2017-11-03 9 views
1

をキャストする私の問題はアンドロイドSearchViewここで例外

致命的な例外です:メイン プロセス:a2msoft.app_one、PID:9608 とjava.lang.ClassCastException: android.support.v7.view.menu.MenuItemImpl android.app.Activity.onCreatePanelMenuでa2msoft.app_one.activiy.MainActivity.onCreateOptionsMenu(MainActivity.java:202) でandroid.support.v7.widget.SearchView にキャストすることはできません(Activity.java:3142)

import a2msoft.app_one.AppConfig; 
import a2msoft.app_one.AppController; 
import a2msoft.app_one.adapter.CustomListAdapter; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.SearchView; 
import android.view.View; 
import android.widget.AdapterView; 

import a2msoft.app_one.R; 
import java.util.ArrayList; 
import java.util.List; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.app.ProgressDialog; 
import android.util.Log; 
import android.view.Menu; 
import android.widget.ListView; 

import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.VolleyLog; 
import com.android.volley.toolbox.JsonArrayRequest; 

public class MainActivity extends AppCompatActivity { 

    private static final String TAG = MainActivity.class.getSimpleName(); 
    SearchView searchView ; 
    //private static final String url = "https://api.androidhive.info/json/movies.json"; 
    private ProgressDialog pDialog; 
    private List<Recipie> movieList = new ArrayList<Recipie>(); 
    private ListView listView; 
    private CustomListAdapter adapter; 
...... 
.... 



@Override 
    public boolean onCreateOptionsMenu(Menu menu) 
    { 

     getMenuInflater().inflate(R.menu.menu_main, menu); 

     searchView = (SearchView) menu.findItem(R.id.app_bar_search); // error comes up here 
      searchView.setQueryHint(getString(R.string.search)); 
     searchView.setIconified(true); 
     searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){ 
     @Override 
      public boolean onQueryTextSubmit(String query) 
     { 
      return false; 

     } 
     @Override 
       public boolean onQueryTextChange(String change) 
     { 
      return false; 
     } 
     }); 
     return true; 
    } 

menu.xml

​​

マニフェストファイル

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="a2msoft.app_one"> 

    <uses-permission android:name="android.permission.INTERNET" /> 

    <application 
     android:name=".AppController" 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".activiy.LoginActivity" 
      android:label="@string/app_name" 
      android:launchMode="singleTop" 
      android:windowSoftInputMode="adjustPan"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".activiy.RegisterActivity" 
      android:label="@string/app_name" 
      android:launchMode="singleTop" 
      android:windowSoftInputMode="adjustPan" /> 
     <activity 
      android:name=".activiy.MainActivity" 
      android:label="@string/app_name" 
      android:launchMode="singleTop" 
      android:theme="@style/AppTheme" 
      > 
     <meta-data 
      android:name="android.app.default_searchable" 
      android:value=".SearchResultsActivity" /> 
     </activity> 
     <activity 
      android:name=".activiy.ItemActivity" 
      android:label="@string/app_name" 
      android:launchMode="singleTop" 

      android:parentActivityName=".activiy.MainActivity" 


      /> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value=".activiy.MainActivity" /> 
    </application> 

</manifest> 

助けてください

+0

これは素晴らしいandroid.support.v7.view.menu.MenuItemImpl – user1130456

答えて

0

使用この

MenuItem item = menu.findItem(R.id.app_bar_search); 
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(item); 

の代わりに、この

 searchView = (SearchView) menu.findItem(R.id.app_bar_search); // error comes up here 

サンプルコード

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_main, menu); 

    MenuItem item = menu.findItem(R.id.app_bar_search); 
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(item); 

    searchView.setQueryHint(getString(R.string.search)); 
    searchView.setIconified(true); 
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){ 
    @Override 
     public boolean onQueryTextSubmit(String query) 
    { 
     return false; 

    } 
    @Override 
      public boolean onQueryTextChange(String change) 
    { 
     return false; 
    } 
    }); 
    return true; 

} 
+1

どこから来ている私は、これは..actually働いていた私が持っていた...見ることができませんこれを早く試してみましたが、とにかく、とにかく、ありがとうNilu – user1130456

+0

@ user1130456 –

関連する問題