我有一个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();
}
}
答案 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);
}