我有这个代码用于选择textView并复制到剪贴板:
txt=(TextView)findViewById(R.id.textView1);
String stringYouExtracted = txt.getText().toString();
int startIndex = txt.getSelectionStart();
int endIndex = txt.getSelectionEnd();
stringYouExtracted = stringYouExtracted.substring(startIndex, endIndex);
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
clipboard.setText(stringYouExtracted);
我想放一个按钮,当我按下它,发送文本启用并运行时,我也有这个代码:
btn.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, stringYouExtracted);
sendIntent.setType("text/plain");
startActivity(sendIntent);
}
});
但此错误出现在setOnClickListener
(setOnClickListener
的第3行)中:
不能引用在另一个方法中定义的内部类中的非final变量stringYouExtracted
SDK建议我在第一行代码的第二行之前添加final。当我这样做时,第一个代码的第5行出现另一个错误:
无法分配最终的局部变量stringYouExtracted。它必须为空白且不使用复合赋值
并建议我从第一行代码的第二行中删除final,我已添加它以解决上一个错误
我该怎么办?
答案 0 :(得分:1)
卸下:
String stringYouExtracted = txt.getText().toString();
从
改变stringYouExtracted = stringYouExtracted.substring(startIndex, endIndex);
到
final String stringYouExtracted = txt.getText().toString().substring(startIndex, endIndex);
答案 1 :(得分:1)
试试这个:
String value = txt.getText().toString();
int startIndex = txt.getSelectionStart();
int endIndex = txt.getSelectionEnd();
final String stringYouExtracted = value.substring(startIndex, endIndex);