Здесь, в моем классе Custom Adapter, когда я отслеживаю ошибку, которую я нашел после нажатия на изображение, она успешно проходит метод onClick, достигает намерения, но он падает, когда он пытается запустить второе действие.Зачем начинать второй Сбой активности при передаче данных с помощью Intent в методе onClick
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: FATAL ИСКЛЮЧЕНИЕ : 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.movieapp.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) на android.app.ActivityThread.main (ActivityThread.java:5283) по адресу 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. основной (ZygoteInit.java:869) на dalvik.system.NativeStart.main (Native Method)
и после редактирования этих строк внутри метода 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);
}
он дал мне пустой указатель за исключением txtTitle (TextView) в классе DetailActivity.java.
Может кто-нибудь помочь мне решить эту проблему. ваш ответ будет оценен.
Можете ли вы проверить журналы ошибок и посмотреть, не делает ли что-нибудь действие txtTitle для исключения исключения из-за нулевого указателя? – AmanSinghal
@AmanSinghal Я отредактировал мое сообщение, чтобы включить результаты журналов ошибок, пожалуйста, просмотрите его в приведенном выше сообщении –
, вы передаете объект данных в намерение, а затем getString с другой стороны? это не вызовет проблем? не следует ли вам передавать 'feedItem.getTITLE_STRING()'? – TWL