2016-01-19 5 views
0

У меня есть метод pdfviewer(...), написанный в классе In_cs_3_s1, который в основном принимает путь к файлу, имя файла и URL в качестве аргументов. Сначала он проверяет, существует ли файл в указанном пути, если он это делает, он вызывает средство просмотра pdf. Кроме того, он загружает файл с указанного URL: для этого он вызывает СКАЧАТЬ МЕНЕДЖЕР. Я хочу вызвать этот method(pdfviewer) из множества мест.Есть ли способ сделать следующий метод доступным для всех классов?

Вот мой код:

public void pdfviewer(String branch,String sem,String folder,String fname,String url,Context a) 
{ 
    File file = new File(Environment.getExternalStorageDirectory() 
       +File.separator+"name"+File.separator+branch+File.separator+sem+File.separator+folder,fname);   

     if(file.exists()) 
     { 

      Intent intent = new Intent(Intent.ACTION_VIEW); 
       intent.setDataAndType(Uri.fromFile(file),"application/pdf"); 
       intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       try 
       { 
        startActivity(intent); 
       } 
       catch (ActivityNotFoundException e) 
       { 
        Toast.makeText(this, "NO pdf viewer found", Toast.LENGTH_SHORT).show(); 
       } 
     } 
     else 
     { 
       file_download(url,branch,sem,folder,fname); 
       Toast.makeText(this, "Downloading.....", Toast.LENGTH_LONG).show(); 
     } 

} 


public void file_download(String uRl,String branch,String sem,String folder,String fname) { 
    File direct = new File(Environment.getExternalStorageDirectory() 
      +File.separator+"name"+File.separator+branch+File.separator 
      +sem+File.separator+folder); 

    if (!direct.exists()) { 
     direct.mkdirs(); 
    } 

    DownloadManager mgr = (DownloadManager) this.getSystemService(Context.DOWNLOAD_SERVICE); 

    Uri downloadUri = Uri.parse(uRl); 
    DownloadManager.Request request = new DownloadManager.Request(
      downloadUri); 
    request.allowScanningByMediaScanner(); 
    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); 
    request.setAllowedNetworkTypes(
      DownloadManager.Request.NETWORK_WIFI 
        | DownloadManager.Request.NETWORK_MOBILE) 
      .setAllowedOverRoaming(false) 
      .setDestinationInExternalPublicDir("/name"+File.separator+branch+File.separator 
        +sem+File.separator+folder,fname); 

    mgr.enqueue(request); 

} 

я хочу, чтобы вызвать этот метод из onclicklistener кнопки. Я новичок, поэтому, пожалуйста, легко.

+0

Что такое 'pobj'? –

+0

вы не можете создать новый экземпляр Activity и просто использовать его. Новые экземпляры могут быть созданы только системой Android. Прежде чем начинать программирование, ознакомьтесь с основными сведениями об андроиде, иначе у вас будет сотни таких проблем. –

+0

спасибо! поэтому, если я вложу метод в другой класс, который не расширяет Activity, тогда он должен работать правильно? –

ответ

0

Создать глобальную переменную для объекта: (за пределами метода OnCreate) В первом коде

In_cs_3_s1 PObj;

Проблема внутри onClick, она не может найти объект pobj;

+0

Я сделал это !! он бросил ту же ошибку. –

+0

Ну, во-первых, это просто неправильно, чтобы создать экземпляр Activity. (2) Я думаю, что код не зависит от жизненного цикла активности. Поэтому создайте еще один класс и поместите эти методы в этот класс, а затем вызовите функцию в методе onClick. Если вам вообще нужен контекст активности, передайте контекст активности как параметр функции. Надеюсь это поможет – kishorepatel

 Смежные вопросы

  • Нет связанных вопросов^_^