java - 在一项活动中没有获得多个意图
问题描述
我有两个不同的活动,这两个活动导致一个活动,我正在根据收到的意图设置结果活动的文本但是当我运行应用程序时,我只从第一个活动中获得意图,我在谷歌上搜索相同但无法理解我在哪里会出错的。我认为条件有一些错误,但如果有人可以在这里指导我,请不要在哪里。我的 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);
}
}
}
解决方案
哥们你都做错了。。
无需使用两个不同的键传递值。保持它们相同。
第一个活动
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);
}
推荐阅读
- node.js - 如何使用 docker-compose 和多个 dockerfile 设置上下文
- groovy - TheTable 是如何填充到 ActiveMQMapMessage 中的?可以检索其内容吗?
- java - 如何从 `txn.getAll("Entity")` 方法获取子集结果?
- swift - IntentResponse 的 .continueInApp 选项未打开应用程序 IOS 12 Beta 6
- php - 添加缩略图/特色图像和摘录到循环(多站点)
- javascript - 断开字符串并以最高顺序排列
- jquery - jQuery 在两个类之间切换,显示和隐藏
- java - 我正在 youtube 上观看 java 教程,但似乎找不到我的 HandlerClass 和 itemStateChaged 之间的区别
- google-chrome - 有没有办法获取主要浏览器的最新版本号?
- r - 将 data.table fread 操作从 32 位升级到 64 位?