我得到這個消息'字段可以轉換爲局部變量'。做了一些關於它的研究,發現這個好職位:here'字段可以被轉換爲本地變量'消息,然後變量不被識別
變量我正在用的這些消息宣佈後直:
public class MainActivity extends Activity {
final ListView listview;
final String callType;
final String phoneNumber;
final String callDate;
final String callDuration;
final Date callDateTime;
所以我把它的建議,使我這樣的代碼:
package com.example.chris.sunil_gupta;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.CallLog;
import android.widget.ListView;
public class MainActivity extends Activity {
private List <CallData>list = new ArrayList<CallData>();
private Context context=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
final ListView listview;
final String callType;
final String phoneNumber;
final String callDate;
final String callDuration;
final Date callDateTime;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context=this;
listview=(ListView)findViewById(R.id.ListView_CallData);
getCallDetails();
CustomAdapter adapter = new CustomAdapter(MainActivity.this, list);
listview.setAdapter(adapter);
}
public void getCallDetails()
{
@SuppressWarnings("deprecation")
Cursor managedCursor = managedQuery(CallLog.Calls.CONTENT_URI,null, null,null, null);
int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER);
int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE);
int date = managedCursor.getColumnIndex(CallLog.Calls.DATE);
int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION);
while (managedCursor.moveToNext())
{
phoneNumber = managedCursor.getString(number);
callType = managedCursor.getString(type);
callDate = managedCursor.getString(date);
callDateTime = new Date(Long.valueOf(callDate));
callDuration = managedCursor.getString(duration);
String cType = null;
int cTypeCode = Integer.parseInt(callType);
switch(cTypeCode)
{
case CallLog.Calls.OUTGOING_TYPE:
cType = "OUTGOING";
break;
case CallLog.Calls.INCOMING_TYPE:
cType= "INCOMING";
break;
case CallLog.Calls.MISSED_TYPE:
cType = "MISSED";
break;
}
CallData calldata=new CallData(cType, phoneNumber, callDateTime, callDuration);
list.add(calldata);
}
managedCursor.close();
}
}
現在CALLTYPE,phoneNumber的,callDate,callDuration,callDateTime都上來了紅色和我得到的錯誤 - 表達的非法啓動 - 當我嘗試編譯我的項目。
任何人都可以告訴我什麼是錯的,以及如何解決這個問題?
你需要在使用它們的方法中聲明你的變量(getCallDetails)。 – Eborbob
將此作爲答案,我將其標記爲正確。 – CHarris