2017-07-22 11 views
1

メインアクティビティのインテントを実行するために別のクラスを作成しました。なぜ私はそれを実行しようとしていると私は理由を把握することはできませんjava.lang.NullPointerExceptionを取得しています。別のクラスからインテントを呼び出す

主な活動:

SearchToolbar searchToolbar = new SearchToolbar(MainActivity.this, this, title); 
searchToolbar.runToolbar(); 

SearchToolbar活動: パッケージcom.example.android.redroom。

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.view.KeyEvent; 
import android.view.View; 
import android.view.inputmethod.EditorInfo; 
import android.widget.EditText; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class SearchToolbar extends AppCompatActivity { 

    private static final String BOOKS_REQUEST_BASE_URL = "https://www.googleapis.com/books/v1/volumes?q="; 
    private Activity activity; 
    private Context context; 
    private String title; 
    private TextView generalTitleView; 
    private EditText searchView; 
    private String searchWord; 
    private String finalURL; 

    public SearchToolbar(Activity activity, Context context, String title) { 
     this.activity = activity; 
     this.context = context; 
     this.title = title; 
    } 

    public void runToolbar() { 

     //Set current fragment title 
     generalTitleView = (TextView) activity.findViewById(R.id.general_title); 
     generalTitleView.setText(title); 

     //Search editor on enter listener 
     searchView = (EditText) activity.findViewById(R.id.search_view); 
     searchView.setVisibility(View.GONE); 
     searchView.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
      public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 

       if (actionId == EditorInfo.IME_ACTION_DONE) { 

        StringBuilder requestUrl = new StringBuilder(BOOKS_REQUEST_BASE_URL); 
        searchWord = searchView.getText().toString(); 
        requestUrl.append(searchWord); 
        requestUrl.append("&maxResults=10"); 
        finalURL = requestUrl.toString(); 

        Intent goToSearchActivity = new Intent(context, ActivitySearch.class); 
        goToSearchActivity.putExtra("requestURL", finalURL); 
        goToSearchActivity.putExtra("searchWord", searchWord); 
        startActivity(goToSearchActivity); 
       } 
       return false; 
      } 
     }); 

     //Toolbar on click listener 
     ImageView searchBtn = (ImageView) activity.findViewById(R.id.search_btn); 
     searchBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       searchView.setVisibility(View.VISIBLE); 
       generalTitleView.setVisibility(View.GONE); 
      } 
     }); 
    } 
} 

エラー:

FATAL EXCEPTION: main 
                      Process: com.example.android.redroom, PID: 11174 
                      java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference 
                       at android.app.Activity.startActivityForResult(Activity.java:3967) 
                       at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:50) 
                       at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:79) 
                       at android.app.Activity.startActivityForResult(Activity.java:3928) 
                       at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:859) 
                       at android.app.Activity.startActivity(Activity.java:4251) 
                       at android.app.Activity.startActivity(Activity.java:4219) 
                       at com.example.android.redroom.SearchToolbar$1.onEditorAction(SearchToolbar.java:64) 
                       at android.widget.TextView.onEditorAction(TextView.java:4773) 
                       at com.android.internal.widget.EditableInputConnection.performEditorAction(EditableInputConnection.java:139) 
                       at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:304) 
                       at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:78) 
                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                       at android.os.Looper.loop(Looper.java:152) 
                       at android.app.ActivityThread.main(ActivityThread.java:5497) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

答えて

1

はちょうどこの

Intent goToSearchActivity = new Intent(context, ActivitySearch.class); 
       goToSearchActivity.putExtra("requestURL", finalURL); 
       goToSearchActivity.putExtra("searchWord", searchWord); 
       context.startActivity(goToSearchActivity); 
+0

はありがとうございます!はい、それは働いた、私はちょうどcontext.startActivity(goToSearchActivity)を書く必要があった。 startActivity(goToSearchActivity)の代わりに。 –

関連する問題