大家。
在我的应用程序中,有一个公共字符串变量(route_directory)和两个按钮(downloadFolderButton,button_import_csv)。
首先按下downloadFolderButton并从数据库中获取数据。数据将被放入字符串route_directory中。 之后将按下button_import_csv。它将获取route_directory以执行其他功能。 以下是我的代码(省略了一些逻辑)。但是,日食认为第二个路径中的route_direct是一个未定义的类。
import class_1...
import class_2...
public class project extends Activity{
public String A;
public void onCreate(Bundle savedInstanceState){
Button downloadFolderButton = (Button) findViewById(R.id.button_download_folder_id);
downloadFolderButton.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
Cursor cur=db.rawQuery("SELECT route as _id,ftp_server_ip,ftp_folder,csv_local_folder,upload_folder,download_folder FROM pda WHERE default_route =?",new String [] {"Y"});
if (cur.moveToFirst()){
default_route = cur.getString(cur.getColumnIndex("_id"));
ftp_server_ip = cur.getString(cur.getColumnIndex("ftp_server_ip"));
ftp_folder = cur.getString(cur.getColumnIndex("ftp_folder"));
csv_local_folder = cur.getString(cur.getColumnIndex("csv_local_folder"));
upload_folder = cur.getString(cur.getColumnIndex("upload_folder"));
download_folder = cur.getString(cur.getColumnIndex("download_folder"));
File directory = Environment.getExternalStorageDirectory();
route_folder= directory.getPath()+csv_local_folder+"/"+default_route;
File route_directory = new File(route_folder);
DeleteRecursive(route_directory);
route_directory.mkdir();
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
Uri ftpUri = Uri.parse("ftp://"+ftp_server_ip);
intent.setDataAndType(ftpUri, "vnd.android.cursor.dir/lysesoft.andftp.uri");
intent.putExtra("ftp_username", "oracle9i");
intent.putExtra("ftp_password", "liaixlau");
intent.putExtra("ftp_pasv", "true");
intent.putExtra("command_type", "download");
intent.putExtra("progress_title", "Downloading folder ...");
intent.putExtra("remote_file1", ftp_folder);
intent.putExtra("local_folder", route_folder);
startActivityForResult(intent, DOWNLOAD_FOLDER_REQUEST);
}
cur.close();
}
});
Button button_import_csv = (Button) findViewById(R.id.button_import);
button_import_csv.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
db.delete(tableName[0], null, null );
db.delete(tableName[1], null, null );
db.delete(tableName[2], null, null );
db.delete(tableName[3], null, null );
db.delete(tableName[4], null, null );
db.delete(tableName[5], null, null );
db.delete(tableName[6], null, null );
db.delete(tableName[7], null, null );
db.delete(tableName[8], null, null );
db.delete(tableName[9], null, null );
db.delete(tableName[10], null, null );
db.delete(tableName[11], null, null );
db.delete(tableName[12], null, null );
db.delete(tableName[13], null, null );
db.delete(tableName[14], null, null );
db.delete(tableName[15], null, null );
db.delete(tableName[16], null, null );
db.delete(tableName[17], null, null );
db.delete(tableName[18], null, null );
db.delete(tableName[19], null, null );
try{
File[] csvfile = route_directory.listFiles();
csvfile_string = Arrays.toString(csvfile);
Log.d("Importcsv",csvfile_string);
for(int j=0;j<20;j++){
InputStreamReader isr = new InputStreamReader(new FileInputStream(csvfile[j]),"BIG5");
BufferedReader buffer = new BufferedReader(isr);
ContentValues contentValues=new ContentValues();
String line = buffer.readLine(); //read first line to get the column
String[] cols = line.split("\t");
while ((line = buffer.readLine()) != null) {
String[] str = line.split("\t");
for (int i = 0; i < cols.length; i++) {
str[i] = str[i].replaceAll("\"", "");
contentValues.put(cols[i], str[i]);
Log.d("ice",cols[i] + "= " + str[i]);
}
ret = db.insert(tableName[j], null, contentValues);
}
buffer.close();
}
}catch (IOException e){
}
}
});
}
答案 0 :(得分:0)
您在匿名内部类中定义了route_directory
(对于按钮dowloadFolderButton
&#39; s onClickListener.onClick()
。如果您要将其定义为活动中的私有变量,您将在onClick()函数中都具有可见性。