2016-08-13 9 views
0

ここでは、私のカスタムアダプタークラスでは、イメージを押した後に見つかったエラーをトレースしていますが、その意図は、2番目のアクティビティを開始しようとするとクラッシュします。ここでonClickメソッドのインテント経由でデータを渡している間に2番目のアクティビティがクラッシュする理由

package com.example.prof_mohamed.movieapp; 

import android.content.Context; 
import android.content.Intent; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import android.widget.TextView; 

import com.squareup.picasso.Picasso; 

import java.util.ArrayList; 
import java.util.List; 

/** 
* Created by Prof-Mohamed on 8/3/2016. 
*/ 

public class ImagesAdapter extends   RecyclerView.Adapter<ImagesAdapter.ViewHOlder> { 
    private List<MovieEntity> feedItemList; 

    private Context mContext; 


    public ImagesAdapter(Context context, ArrayList<MovieEntity>  feedItemList) { 
     this.feedItemList=feedItemList; 
     this.mContext= context; 
    } 

    @Override 
    public ImagesAdapter.ViewHOlder onCreateViewHolder(ViewGroup parent,  int i) { 
     View view =  LayoutInflater.from(parent.getContext()).inflate(R.layout.row_layout, null); 

     RecyclerView.ViewHolder viewHolder=new ViewHOlder(view); 
     return (ViewHOlder) viewHolder; 
    } 

    @Override 
    public void onBindViewHolder(ViewHOlder customViewholder, final int  i) { 

     final MovieEntity feedItem=feedItemList.get(i); 
      Picasso.with(mContext).load(feedItem.getPOSTER_PATH_STRING()).into(customView holder.one_img); 

     customViewholder.one_text.setText(feedItem.getTITLE_STRING()); 
     customViewholder.one_img.setOnClickListener(new  View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent intent = new Intent(mContext,DetailActivity.class) 
         .putExtra(Intent.EXTRA_TEXT,feedItem); 
       mContext.startActivity(intent); 
      } 
     }); 
    } 

    @Override 
    public int getItemCount() { 
     return (null!=feedItemList?feedItemList.size():0); 
    } 

    public class ViewHOlder extends RecyclerView.ViewHolder { 
     protected ImageView one_img; 
     protected TextView one_text; 

     public ViewHOlder(View converview) { 
      super(converview); 

      this.one_img = (ImageView)  converview.findViewById(R.id.img_view); 
      this.one_text = (TextView)  converview.findViewById(R.id.txt_poster_title); 
     } 
    } 
} 

は、私はそれに最初のアクティビティから自分のデータを送信する必要が私の第二の活動、以下のとおりです。

package com.example.prof_mohamed.movieapp; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.widget.TextView; 

public class DetailActivity extends AppCompatActivity { 

    private static String mMovieStr; 

     TextView txtTitle=(TextView) findViewById(R.id.txt_title); 

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

     Intent intent = getIntent(); 

     if(intent != null&&intent.hasExtra(intent.EXTRA_TEXT)){ 
     mMovieStr=intent.getStringExtra(intent.EXTRA_TEXT); 
     txtTitle.setText(mMovieStr); 
    } 
} 
} 

これは私のエラーの結果である:

E/AndroidRuntime:致命的な例外:main android.util.AndroidRuntimeException:アクティビティコンテキストの外部からstartActivity()を呼び出すには、FLAG_ACTIVITY_NEW_TASKフラグが必要です。これは本当にあなたが望むものですか? android.app.ContextImpl.startActivity(ContextImpl.java:1278)android.app.ContextImpl.startActivity(ContextImpl.java:1265)で com.example.prof_mohamed.movi​​eapp.ImagesAdapter $ 1.onClickで (ImagesAdapter.javaで :52) android.view.View.performClick(View.java:4432) (android.view.View)$ PerformClick.run(View.java:18339) (android.os.Handler.handleCallback(Handler.java: :725) android.os.Handler.dispatchMessage(Handler.java:92) (android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5283) ) at java.lang.reflect.Method.invokeNative(ネイティブメソッド) at jav a.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1102) at com.android.internal.os.ZygoteInit。メインdalvik.system.NativeStart.mainで(ZygoteInit.java:869) (ネイティブメソッド)

とのonClick方法

@Override 
public void onClick(View view) { 
Intent intent = new Intent(mContext,DetailActivity.class) 
        .putExtra(Intent.EXTRA_TEXT,feedItem); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       mContext.startActivity(intent); 
     } 

内部これらの行を編集した後、それは私のヌル・ポインタ例外を与えDetailActivity.javaクラスのtxtTitle(TextView)

誰でも私にこの問題の解決を手伝ってもらえますか?あなたの応答は高く評価されます。

+0

エラーログを確認して、txtTitleで何か処理してもNULLポインタ例外が発生していないか確認できますか? – AmanSinghal

+0

@AmanSinghalエラーログの結果を含めるために投稿を編集しました。上記の投稿 –

+0

でデータオブジェクトをインテントに渡し、もう一方の側にgetStringを渡してください。それは問題を引き起こしませんか? 'feedItem.getTITLE_STRING()'を渡すべきではありませんか? – TWL

答えて

0

てみてください)あなたのアダプタクラスで意図

myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
+0

をいただきありがとうございます。私にjava.lang.NullPointerExceptionを与えるのは初めてです。 –

+0

すばらしいことに、なぜそれがその例外を与えているのかを助けたいのですか? – AmanSinghal

-1

マニフェストファイルにDetailActivityが定義されていることを確認してください。

+0

これらは、マニフェストファイルの私の活動です: <活動のアンドロイド:名= "MainActivity "> <意図-フィルタ> <アクションアンドロイド:名=" android.intent.action.MAIN" /> <カテゴリアンドロイド:名= "android.intent.category.LAUNCHER" /> <活動のアンドロイド:名= "DetailActivity"> が、これは本当ですか、それは<意図を含んでいる必要があります-Filter>タグも.MainActivity? –

+0

これは問題ありません。もっと確認しています... – Ramit

+0

ImageAdapterコンストラクタで、あなたはアクティビティコンテキストを渡しているかどうか? – Ramit

0

これを試してみてください。次のコードを追加し

Intent intent = new Intent(mContext,DetailActivity.class) 
         .putExtra(Intent.EXTRA_TEXT,feedItem); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
mContext.startActivity(intent); 
+0

私はintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)を使用して動作しました。この行を使用したあと –

0

を作成した後にオブジェクトを渡しているが、2番目の活動にあなたがgetStringExtra(しようとしています

この情報はお役に立ちます。

How to send an object from one Android Activity to another using Intents?

+0

@ラミット、それが動作する場合は、人々も助けを得ることができるように、回答を受け入れてください – shahid17june

+0

Prof-Mohamed Atefはこれを受け入れることができますが、私の側から1つをプラス:) – Ramit

+0

ありがとう... :) – shahid17june

-1

feedItemはオブジェクトです。これをインテントで渡して、2番目のアクティビティからStringとして取得しようとすると、それが問題です。

関連する問題