recyclerview获取项目点击值并打开活动 - apk崩溃

时间:2017-02-20 11:52:48

标签: android android-studio android-intent android-recyclerview

我有一个recyclerview来显示这样的列表:

Image.jpg
Name: josh
Publisher: 1999

Image2.jpg
Name: marie
Publisher: 2002

...

我想,当用户点击josh或marie(名称)时,它会使用intent调用Profile.java并将其内容(名称)放到下一个活动中,因此我知道应该打开哪个配置文件。 (如果用户点击marie,将marie放到下一个活动中)

问题是当我点击josh时,marie ......应用程序崩溃了。

有什么问题?

//Initializing Views
public ViewHolder(View itemView) {
    super(itemView);
    imageView = (NetworkImageView) itemView.findViewById(R.id.imageViewHero);
    textViewName = (TextView) itemView.findViewById(R.id.textViewName);
    textViewPublisher = (TextView) itemView.findViewById(R.id.textViewPublisher);
    textViewName.setClickable(true);
    textViewName.setOnClickListener(this);
}
@Override
public void onClick(View v) {
    final Intent intent;
    intent =  new Intent(context, Profile.class);
    intent.putExtra("user", R.id.textViewName);
    context.startActivity(intent);
}

谢谢各位朋友。

我的个人资料:

package com.sl.meetf;

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

public class Profile extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent intent = getIntent();
        String user = intent.getStringExtra("user");

        String message = user + " welcome to user area";

        Context context = getApplicationContext();
        Toast toast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
        toast.show();

    }
}

2 个答案:

答案 0 :(得分:4)

更改此

intent =  new Intent(context, Profile.class);
    intent.putExtra("user", R.id.textViewName);
    context.startActivity(intent);

intent =  new Intent(context, Profile.class);
    intent.putExtra("user", textViewName.getText().toString());
    context.startActivity(intent);

希望有所帮助

编辑:

如果onClick无法为您工作,请尝试此操作

textViewName.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               intent =  new Intent(context, Profile.class);
               intent.putExtra("user", textViewName.getText().toString());
               context.startActivity(intent);
            }
        });

请检查您的profile.class不包含任何错误或共享logcat

答案 1 :(得分:1)

您需要从textviewName获取名称而不是资源ID。 例如

  @Override
     public void onClick(View v) {
        final Intent intent;
        intent =  new Intent(context, Profile.class);
        intent.putExtra("user",textviewName.getText().toString());
        context.startActivity(intent);
  }