getSystemService() 不适用于适配器 Class
getSystemService() not working on Adapter Class
我试图将 onClickListener 添加到 RecyclerView 中的一个按钮,它会复制一个字符串,但它说 getSystemService(CLIPBOARD_SERVICE) 不可用。
public void onBindViewHolder(ViewHolder holder, int position) {
holder.title.setText(cardItems.get(position).title);
holder.content.setText(cardItems.get(position).content);
holder.copyButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
myClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
String text;
text = EditText.getText().toString();
myClip = ClipData.newPlainText("text", text);
myClipboard.setPrimaryClip(myClip);
Toast.makeText(getApplicationContext(), "Text Copied", Toast.LENGTH_SHORT).show();
}
});
}
您必须使用上下文来获取 System Service
,将其添加到构造函数中并在创建适配器时将其作为参数传递:
private Context context;
//Constructor
public YourAdapter(Context context){
this.context = context;
}
public void onBindViewHolder(ViewHolder holder, int position) {
holder.title.setText(cardItems.get(position).title);
holder.content.setText(cardItems.get(position).content);
holder.copyButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
myClipboard = (ClipboardManager)context.getSystemService(CLIPBOARD_SERVICE);
String text;
text = EditText.getText().toString();
myClip = ClipData.newPlainText("text", text);
myClipboard.setPrimaryClip(myClip);
Toast.makeText(getApplicationContext(), "Text Copied", Toast.LENGTH_SHORT).show();
}
});
}
您需要 Context
才能做到这一点。执行:
...
public void onClick(View v) {
myClipboard = (ClipboardManager) v.getContext().getSystemService(CLIPBOARD_SERVICE);
...
}
试试这个
在适配器 class 中:添加此构造函数
private Activity mActivity;
public adapter(Activity activity){
mActivity = activity;
}
然后通过这个 mActivity 变量调用 getSystemService()
myClipboard =(ClipboardManager)mActivity.getSystemService(CLIPBOARD_SERVICE);
适配器没有自己的 existence.its 适用于 activity。因此,如果您想调用该类型的服务或其他 activity 事物,您必须传递正在使用此适配器的 activity 的上下文。所以用 context
打电话
喜欢
myClipboard = (ClipboardManager)context.getSystemService(CLIPBOARD_SERVICE);
我试图将 onClickListener 添加到 RecyclerView 中的一个按钮,它会复制一个字符串,但它说 getSystemService(CLIPBOARD_SERVICE) 不可用。
public void onBindViewHolder(ViewHolder holder, int position) {
holder.title.setText(cardItems.get(position).title);
holder.content.setText(cardItems.get(position).content);
holder.copyButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
myClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
String text;
text = EditText.getText().toString();
myClip = ClipData.newPlainText("text", text);
myClipboard.setPrimaryClip(myClip);
Toast.makeText(getApplicationContext(), "Text Copied", Toast.LENGTH_SHORT).show();
}
});
}
您必须使用上下文来获取 System Service
,将其添加到构造函数中并在创建适配器时将其作为参数传递:
private Context context;
//Constructor
public YourAdapter(Context context){
this.context = context;
}
public void onBindViewHolder(ViewHolder holder, int position) {
holder.title.setText(cardItems.get(position).title);
holder.content.setText(cardItems.get(position).content);
holder.copyButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
myClipboard = (ClipboardManager)context.getSystemService(CLIPBOARD_SERVICE);
String text;
text = EditText.getText().toString();
myClip = ClipData.newPlainText("text", text);
myClipboard.setPrimaryClip(myClip);
Toast.makeText(getApplicationContext(), "Text Copied", Toast.LENGTH_SHORT).show();
}
});
}
您需要 Context
才能做到这一点。执行:
...
public void onClick(View v) {
myClipboard = (ClipboardManager) v.getContext().getSystemService(CLIPBOARD_SERVICE);
...
}
试试这个
在适配器 class 中:添加此构造函数
private Activity mActivity;
public adapter(Activity activity){
mActivity = activity;
}
然后通过这个 mActivity 变量调用 getSystemService()
myClipboard =(ClipboardManager)mActivity.getSystemService(CLIPBOARD_SERVICE);
适配器没有自己的 existence.its 适用于 activity。因此,如果您想调用该类型的服务或其他 activity 事物,您必须传递正在使用此适配器的 activity 的上下文。所以用 context
喜欢
myClipboard = (ClipboardManager)context.getSystemService(CLIPBOARD_SERVICE);