首页 > 解决方案 > 在一项活动中没有获得多个意图

问题描述

我有两个不同的活动,这两个活动导致一个活动,我正在根据收到的意图设置结果活动的文本但是当我运行应用程序时,我只从第一个活动中获得意图,我在谷歌上搜索相同但无法理解我在哪里会出错的。我认为条件有一些错误,但如果有人可以在这里指导我,请不要在哪里。我的 ResultActivity 代码

Bundle extras = getIntent().getExtras();
        if(extras != null) {
            if(extras.containsKey("title")) {
               // title_text = getIntent().getStringExtra("");
                title_text = extras.getString("title");
                toolbar_title.setText(title_text);
            }
        }
        else{

            title_text2 = getIntent().getStringExtra("title2");
            //title_text2 = extras.getString("title2");
            toolbar_title.setText(title_text2);
        }

FirstActivity.class

public void startMoreDetailActivity(){
        Intent startintent = new Intent(this, Main_Page_Details.class);
        startintent.putExtra("title",title_text);
        startActivity(startintent);
    }

SecondActivity(在回收站视图中)

public void startMoreDetailActivity(){
            Intent startintent = new Intent(context, Main_Page_Details.class);
            int position  = getAdapterPosition();
            startintent.putExtra("title2",title_text);
            context.startActivity(startintent);
        }

我的适配器类

    public class SnapAdapter extends RecyclerView.Adapter<SnapAdapter.ViewHolder> implements GravitySnapHelper.SnapListener {

    public static final int VERTICAL = 0;
    public static final int HORIZONTAL = 1;
    private Context context;
    private ArrayList<Snap> mSnaps;
    // Disable touch detection for parent recyclerView if we use vertical nested recyclerViews
    private View.OnTouchListener mTouchListener = new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            v.getParent().requestDisallowInterceptTouchEvent(true);
            return false;
        }
    };

    public SnapAdapter(Context context) {
        mSnaps = new ArrayList<>();
        this.context = context;
    }

    public void addSnap(Snap snap) {
        mSnaps.add(snap);
    }

    @Override
    public int getItemViewType(int position) {
        Snap snap = mSnaps.get(position);
        switch (snap.getGravity()) {
            case Gravity.CENTER_VERTICAL:
                return VERTICAL;
            case Gravity.CENTER_HORIZONTAL:
                return HORIZONTAL;
            case Gravity.START:
                return HORIZONTAL;
            case Gravity.TOP:
                return VERTICAL;
            case Gravity.END:
                return HORIZONTAL;
            case Gravity.BOTTOM:
                return VERTICAL;
        }
        return HORIZONTAL;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = viewType == VERTICAL ? LayoutInflater.from(parent.getContext())
                .inflate(R.layout.adapter_snap_vertical, parent, false)
                : LayoutInflater.from(parent.getContext())
                .inflate(R.layout.adapter_snap, parent, false);

        if (viewType == VERTICAL) {
            view.findViewById(R.id.recyclerView).setOnTouchListener(mTouchListener);
        }

        return new ViewHolder(view,context);

    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        Snap snap = mSnaps.get(position);
        holder.snapTextView.setText(snap.getText());

        if (snap.getGravity() == Gravity.START || snap.getGravity() == Gravity.END) {
            holder.recyclerView.setLayoutManager(new LinearLayoutManager(holder
                    .recyclerView.getContext(), LinearLayoutManager.HORIZONTAL, false));
            holder.recyclerView.setOnFlingListener(null);
            new GravitySnapHelper(snap.getGravity(), false, this).attachToRecyclerView(holder.recyclerView);
        } else if (snap.getGravity() == Gravity.CENTER_HORIZONTAL) {
            holder.recyclerView.setLayoutManager(new LinearLayoutManager(holder
                    .recyclerView.getContext(), snap.getGravity() == Gravity.CENTER_HORIZONTAL ?
                    LinearLayoutManager.HORIZONTAL : LinearLayoutManager.VERTICAL, false));
            holder.recyclerView.setOnFlingListener(null);
            new LinearSnapHelper().attachToRecyclerView(holder.recyclerView);
        } else if (snap.getGravity() == Gravity.CENTER) { // Pager snap
            holder.recyclerView.setLayoutManager(new LinearLayoutManager(holder
                    .recyclerView.getContext(), LinearLayoutManager.HORIZONTAL, false));
            holder.recyclerView.setOnFlingListener(null);
            new PagerSnapHelper().attachToRecyclerView(holder.recyclerView);
        } else { // Top / Bottom
            holder.recyclerView.setLayoutManager(new LinearLayoutManager(holder
                    .recyclerView.getContext()));
            holder.recyclerView.setOnFlingListener(null);
            new GravitySnapHelper(snap.getGravity()).attachToRecyclerView(holder.recyclerView);
        }


        holder.recyclerView.setAdapter(new Adapter(snap.getGravity() == Gravity.START
                || snap.getGravity() == Gravity.END
                || snap.getGravity() == Gravity.CENTER_HORIZONTAL,
                snap.getGravity() == Gravity.CENTER, snap.getApps()));
    }

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

    @Override
    public void onSnap(int position) {
        Log.d("Snapped: ", position + "");
    }

    public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

        public static CustomTextViewMedium snapTextView;
        public RecyclerView recyclerView;
        public ImageView see_more_image2;
        public Context context;
        String title_text;
        public ViewHolder(View itemView, Context context) {

            super(itemView);
            this.context = context;
            snapTextView = (CustomTextViewMedium) itemView.findViewById(R.id.snapTextView);
            recyclerView = (RecyclerView) itemView.findViewById(R.id.recyclerView);
            see_more_image2 = (ImageView)itemView.findViewById(R.id.see_more_image2);
            title_text = snapTextView.getText().toString();
            itemView.setOnClickListener(this);

            see_more_image2.setOnClickListener(this);
        }

        @Override
        public void onClick(View view) {
            switch (view.getId()){
                case R.id.see_more_image2:
                startMoreDetailActivity();
            }
        }

        public void startMoreDetailActivity(){
            Intent startintent = new Intent(context, Main_Page_Details.class);
            int position  = getAdapterPosition();
            startintent.putExtra("title",title_text);
            context.startActivity(startintent);
        }
    }
}

标签: javaandroid

解决方案


哥们你都做错了。。

无需使用两个不同的键传递值。保持它们相同。

第一个活动

public void startMoreDetailActivity(){
    Intent startintent = new Intent(this, Main_Page_Details.class);
    startintent.putExtra("title",title_text);
    startActivity(startintent);
}

第二次活动

public void startMoreDetailActivity(){
    Intent startintent = new Intent(context, Main_Page_Details.class);
    int position  = getAdapterPosition();
    startintent.putExtra("title",title_text);
    context.startActivity(startintent);
}

并在您的结果活动中..

title_text = extras.getString("title");
toolbar_title.setText(title_text);

如果你还想按照自己的方式做...

if(getIntent().hasExtra("title")) {
    title_text = getIntent().getStringExtra("title");
    toolbar_title.setText(title_text);
} else {
    title_text2 = getIntent().getStringExtra("title2");
    toolbar_title.setText(title_text2);
}

编辑 :

您可以通过执行以下操作获得位置值。

public void startMoreDetailActivity(){
    Intent startintent = new Intent(context, Main_Page_Details.class);
    title_text = mSnaps.get(getAdapterPosition()).getText();
    startintent.putExtra("title",title_text);
    context.startActivity(startintent);
}

推荐阅读