2015-10-11 3 views
0

У меня есть класс, который имеет свою собственную активность для загрузки файла на FTP-сервер, нажав на кнопку, это прекрасно работает. У меня есть еще один класс, который также имеет кнопку, которая переименовывает загруженные файлы в мою основную деятельность. Я хотел бы 1) загрузить файл, затем 2) переименовать, это я могу выполнить, нажав на две кнопки из этих двух отдельных действий в правильной последовательности, я хотел бы использовать кнопку ONE из моей основной деятельности, чтобы вызвать метод загрузки из класс A (а не действие переключателя), а затем запустите метод переименования, ниже приведен код из класса A, который я хотел бы запустить из кнопки класса B onclick.Android Использование метода OnClick из другого класса

ClassA:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_ftpupload); 

    //System.out.println("dirClass.dirFtpSignature :" +dirClass.dirFtpSignature); 

    if (android.os.Build.VERSION.SDK_INT > 9) { 
     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 
     } 

    btn = (Button) findViewById(R.id.btnUpload); 
    btn.setOnClickListener(this); 

} 

public void onClick(View v) { 


    /********** Pick file from sdcard *******/ 
    File f_sender = new File(dirClass.dirSignature + "image.png"); 

    // Upload sdcard file 
    uploadFile_sender(f_sender); 

} 

public void uploadFile_sender(File fileName){ 

    System.out.println("Connecting to FTP..."); 
+0

dirClass является участником Activity A, вы не можете называть это из Activity B, если не укажете, какой dirClass вы хотите использовать. – natario

+0

', который переименовывает загруженные файлы в моем основном действии.'. Вы имеете в виду «который переименовывает загруженные файлы на FTP-сервер»? Но почему потом? Сделайте это перед загрузкой. Я вижу StrictMode в вашем коде. Плохая практика. Удалите его и используйте потоки или AsyncTasks для интернет-кодирования. – greenapps

+0

Да, переименовывает на FTP, я использую идентификатор из базы данных, и последовательность должна быть 1) загрузить 2) вставить в db, 3) переименовать (на основе значений db после вставки), поэтому в основном я просто хочу использовать «onClick «класса A в классе B без активности, потому что он переключает действия, и я хочу оставаться в одном действии. – user5174952

ответ

1

Я получил его,

На класса BI объявлен класса А, а затем используется метод OnClick класса А в классе B. (я только что закомментировать Тосты в классе а ведь они неизвестны классу B, но я думаю, что это также может быть достигнуто, если я обнародует их статические тоже)

Во всяком случае здесь код используется ниже:

public class MyClassB extends MainActivity { 


    FtpUpload fu = new FtpUpload(); //MyClassA 

    ...... 


    public void onClick(View v) { 


        runOnUiThread(new Runnable() { 
          @Override 
          public void run() { 

          fu.f_sender = new File(dirClass.dirSignature + "image.png"); 

          fu.uploadFile_sender(fu.f_sender); 
Смежные вопросы