0
我正嘗試創建我的聯繫人列表的CSV文件。下面是我寫這個代碼:不能引用在不同方法中定義的內部類中的非最終變量名稱
protected Void doInBackground(Void... params) {
String name = "";
String phone = "";
ContentResolver cr = ReadContactsActivity.this.getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
null, null, null);
File folder = new File(Environment.getExternalStorageDirectory()
+ File.separator + getString(R.string.app_name));
boolean var = false;
if (!folder.exists())
var = folder.mkdir();
final String filename = folder.toString() + "/" + "Test.csv";
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
String id = cur.getString(cur
.getColumnIndex(ContactsContract.Contacts._ID));
name = cur
.getString(cur
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
if (Integer
.parseInt(cur.getString(cur
.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
Cursor pCur = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = ?", new String[] { id }, null);
while (pCur.moveToNext()) {
phone = pCur
.getString(pCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
// objItem = new listBean();
// objItem.setName(name);
// objItem.setNumber(phone);
// listArray.add(objItem);
new Thread() {
public void run() {
try {
FileWriter writer = new FileWriter(filename);
writer.append(name);
writer.append(',');
writer.append(phone);
writer.append('\n');
// generate whatever data you want
writer.flush();
writer.close();
} catch (Exception e) {
}
}
}.start();
}
pCur.close();
}
}
}
return null;
}
現在我得到這個錯誤,我已經在run()
方法傳遞的姓名和電話:
Cannot refer to a non-final variable name inside an inner class defined in a different method
請建議如何解決這個問題。
你可以發佈日誌嗎? – 2013-03-14 08:13:31
@SadeshkumarPeriyasamy:它沒有編譯 – Supreet 2013-03-14 08:15:56