为什么不覆盖PendingTransition工作?

时间:2017-02-10 17:52:39

标签: android

我在2个活动之间切换时使用此功能创建动画。但它让我的应用程序停止(不会崩溃,就像暂停一样)。我在一个活动的片段中从Adapter调用overridePendingTransition。

public class LessonAdapter extends RecyclerView.Adapter {

    private List<Lesson> lessonList;

    private Context mContext;

    public LessonAdapter(Context context, List<Lesson> ll) {
        lessonList = ll;
        mContext = context;

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.lesson_card,parent, false);
        return new LessonHolder(view);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
        final LessonHolder lessonHolder = (LessonHolder) holder;
        lessonHolder.lessonName.setText(lessonList.get(position).getLessonName());
        lessonHolder.lessonName.setTextColor(Color.parseColor("#0B8E46"));
        lessonHolder.lessonDescription.setText(lessonList.get(position).getLessonDescription());
        lessonHolder.lessonDescription.setTextColor(Color.parseColor("#686868"));

        if (lessonList.get(position).getUuid() == 1) {
            lessonHolder.lessonCard.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent i = new Intent(mContext, WordTypeLessonActivity.class);
                    mContext.startActivity(i);
                    ((Activity) mContext).overridePendingTransition(R.anim.slide_in, R.anim.slide_out);
                }
            });
        }
        if (lessonList.get(position).getUuid() == 2) {
            lessonHolder.lessonCard.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent i = new Intent(mContext, TenseLessonActivity.class);
                    mContext.startActivity(i);
                    ((Activity) mContext).overridePendingTransition(R.anim.slide_in, R.anim.slide_out);
                }
            });
        }
        if (lessonList.get(position).getUuid() > 2) {
            lessonHolder.lessonCard.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent i = new Intent(mContext, LessonActivity.class);
                    i.putExtra("lesson_id", lessonList.get(position).getUuid());
                    mContext.startActivity(i);
                    ((Activity) mContext).overridePendingTransition(R.anim.slide_in, R.anim.slide_out);
                }
            });
        }
    }

    @Override
    public int getItemCount() {
        return lessonList.size();
    }
}

1 个答案:

答案 0 :(得分:0)

您可以先尝试调用finish()。

https://developer.android.com/reference/android/app/Activity.html#overridePendingTransition(int,int)

或通过ActivityOptions包向startActivity(Intent,Bundle)或相关函数提供所需的动画信息

正如它在文档中推荐的

一个堆栈跟踪会很好,第二个活动的一些代码也是,为什么你使用片段?似乎你可以使用片段在一个活动中完成所有操作,或者根本不使用片段,并使用两个活动。