2012-07-05 132 views
0

嘿家伙我试图从第三方应用程序导出数据,然后将结果导出的文件的路径设置为我的textview主活动。但它不工作。我搜索了所有并得出一个结论,认为它与匿名课程有关,但我仍然无法修复它。任何人都可以引导我。从匿名内部类设置外部类变量

public class MyActivity extends Activity 
{ 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    final Button btRecieve = (Button) findViewById(R.id.btRecieve); 

    final Context context = this.getApplicationContext(); 

    final TextView tvFilePath = (TextView) findViewById(R.id.tvFilepath); 
    final TextView tvFeedBack = (TextView) findViewById(R.id.tvFeedBack); 

    final String pDateFrom = "2012-07-01"; 
    final String pDateTo = "2012-07-06"; 
    final String pExportType = "e5"; 
    final String pExportFormat = "csv"; 

    btRecieve.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      TimeRecordingExport exporter = new TimeRecordingExport(pDateFrom,pDateTo,pExportType,pExportFormat,tvFilePath); 
      exporter.Export(context); 
      String path = exporter.getFilePath(); 

      tvFilePath.setText(path); 


     } 
    }); 
} 
} 







public class TimeRecordingExport{ 
    //private variables 
    String mDateFrom; 
    String mDateTo; 
    String mExportType; 
    String mExportFormat; 

    private String mFilepath;      //path to the output file 
    String feedback; 

    TextView mTv; 

    File file; 

    Context mContext; 

    final String KEY_RESULT_FILE = "com.dynamicg.timerecording.FILE"; 



//Constructor 
    public TimeRecordingExport(String pDateFrom,String pDateTo,String pExportType,String pExportFormat,TextView tv){ 

    //Initialize private variables 
    mDateFrom = pDateFrom; 
    mDateTo = pDateTo; 
    mExportFormat = pExportFormat; 
    mExportType = pExportType; 
    mTv = tv; 

    } //End constructor 

    //Export function 
    public void Export(Context pContext){ 
     mContext = pContext; 
     //create a new intent with action export 
     Intent intent = new Intent("com.dynamicg.timerecording.DATA_EXPORT"); 

     //Add extra values or you could say parameters to this intent. 
     intent.putExtra("com.dynamicg.timerecording.DATE_FROM",mDateFrom); 
     intent.putExtra("com.dynamicg.timerecording.DATE_TO",mDateTo); 
     intent.putExtra("com.dynamicg.timerecording.EXPORT_TYPE",mExportType); 
     intent.putExtra("com.dynamicg.timerecording.EXPORT_FORMAT",mExportFormat); 

     //make a broadcast reciever 
     BroadcastReceiver resultReceiver = new BroadcastReceiver() { 
      @Override 
      public void onReceive(Context context, Intent resultIntent) { 

       Bundle bundle = this.getResultExtras(true); 
       TimeRecordingExport.this.mFilepath = bundle.getString(KEY_RESULT_FILE);    //Path to the created file 
       //mTv.setText(mFilepath[0]); 
       file = new File(mFilepath);               //New Created file 

       feedback = "File=["+file+"], canRead=["+file.canRead()        //Info about the created file 
         +"], sizeKB=["+(file.length()/1024)+"]"; 
       //Toast.makeText(mContext, feedback, Toast.LENGTH_LONG).show(); 

       Toast.makeText(context, feedback, Toast.LENGTH_LONG).show(); 
       System.out.println(feedback); 
      } 
     }; 
     mContext.sendOrderedBroadcast(intent, null, resultReceiver, null, Activity.RESULT_OK, null, null); 
    } //End function export 

    public String getFilePath(){ 

     return mFilepath; 
    } 

    public String getFileInfo(){ 
     return feedback; 
    } 

} //End of class 
+1

定义“不工作”。 – 2012-07-05 22:18:59

+0

不工作意味着,textview不会显示文件的路径。当我将texview.setText()放入匿名类“Broadcastreciever”中时,它起作用。 – user1505293 2012-07-05 22:22:40

回答

0

首先,你有没有尝试把一个测试字符串中的路径值?只是为了确定它不是你的数据?其次,猜测我总是将我的小部件定义为Activity的类变量,而不是onCreate方法中的最终变量。