2017-10-25 12 views
0

私は緩やかにガイドに従っていますが、検索プロセスを開始するのにonClickListenerを使用しています。私はここでローダーを実装する過程にある:getSupportLoaderManager()で 'this'を使用するとエラーメッセージが表示されます

getSupportLoaderManager()。restartLoader(0、queryBundle、this);

が、私は「この」に入れたときには、次のメッセージが現れます:

間違っ第三引数の型を。見つかった: 'android.view.View.OnClickListener'、必須: 'android.support.v4.app.LoaderManager。 LoaderCallbacks '

ガイドの示唆しているように、onClickListenerからonClickメソッドに変更するのは嫌ですが、onClickListenerにローダーを実装する方法はありますか?

コードは以下である:

import android.content.Context; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.app.LoaderManager; 
import android.app.LoaderManager.LoaderCallbacks; 
import android.content.Loader; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.inputmethod.InputMethodManager; 
import android.widget.AdapterView; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 

public class GoogleBookActivity extends AppCompatActivity implements 
LoaderManager.LoaderCallbacks<String>{ 

private static final String TAG = GoogleBookActivity.class.getSimpleName(); 
private EditText mEditText; 
private BookAdapter mAdapter; 
private Button bookSearch; 
private TextView mTitle, mAuthor; 

//URL link to the API 
private static final String GOOGLE_BOOKS_REQUEST_URL = "https://www.googleapis.com/books/v1/volumes?q="; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_google_book); 

    mTitle = (TextView) findViewById(R.id.book_title); 
    mAuthor = (TextView) findViewById(R.id.book_author); 
    bookSearch = (Button) findViewById(R.id.searchbutton); 
    mEditText = (EditText) findViewById(R.id.search_text); 




    bookSearch.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      //Initialise String queryText 
      String queryText = mEditText.getText().toString(); 

      //For Hiding the keyboard when the search button is clicked 
      InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
      inputManager.hideSoftInputFromInputMethod(getCurrentFocus().getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS); 

      //For Checking the network status and empty search field case 
      ConnectivityManager connMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
      NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); 

      if(networkInfo !=null && networkInfo.isConnected() && queryText.length()!=0){ 
       //new FetchBook(mTitle, mAuthor).execute(queryText); 
      } 

      Log.i(TAG, "Searched " + queryText); 
      if(queryText.length() != 0){ 
       new FetchBook(mTitle, mAuthor).execute(queryText); 
       mAuthor.setText(""); 
       mTitle.setText(R.string.loading); 
       //We replace the call to execute the fetchbook task with a call to restartLoader(), passing in 
       // the querystring you get from the EditText in the Bundle. 
       Bundle queryBundle = new Bundle(); 
       queryBundle.putString("queryText", queryText); 
       getSupportLoaderManager().restartLoader(0,queryBundle,this); 

      }else { 
       if(queryText.length() == 0){ 
        mAuthor.setText(""); 
        mTitle.setText("Please enter a search term."); 
       }else{ 
        mAuthor.setText(""); 
        mTitle.setText("Please check your network connection and try again."); 
       } 
      } 
     } 
    }); 


} 


@Override 
public Loader<String> onCreateLoader(int i, Bundle bundle) { 
    return null; 
} 

@Override 
public void onLoadFinished(Loader<String> loader, String s) { 

} 

@Override 
public void onLoaderReset(Loader<String> loader) { 

    } 
} 

答えて

2

thisが封入OnClickListenerを指す:

bookSearch.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View view) { 
     // You are now inside an anonymous class extending from 
     // OnClickListener. 'this' now refers to this very instance 
     // of the OnClickListener 
    } 
}); 

だけ前にそのクラス名を入力し、封入GoogleBookActivityを参照するために:

getSupportLoaderManager().restartLoader(0, queryBundle, GoogleBookActivity.this); 
+0

それでも私には同じエラーが表示されます。 – Ropenfold

+0

@Ropenfoldそれはまだ「見つかった: 'android.view.View.OnClickListener'」と言っていますか?それからあなたのプロジェクトをきれいにしてビルドしてみてください。 –

関連する問題