android studio başqa bir fəaliyyətdə bir üsulu necə çağıracaq


cavab 1:

Bənzər bir şeyə işarə edirsinizsə:

yeni MainActivity (). doMyMethod ();

o zaman bu mümkün deyil.

Həqiqi cavab tamamilə əldə etməyə çalışdığınız şeydən asılıdır. Cavab, Fəaliyyətinizə bir istinadın başqa bir sinifə keçməsini və ya bir interfeys istifadə etməsini və ya LocalBroadcastManager kimi bir EventBus istifadə etməsini və ya "Əlavələr" Paketinə köçürülmüş bir niyyət və bir növ bayraqla yeni bir Fəaliyyətə başlamağı ehtiva edə bilər. və ya tamamilə başqa bir şey.

Sualınızın təsvirinə nail olmağa çalışdığınız şey haqqında daha çox məlumat əlavə etmək kömək edəcəkdir.

Redaktə edin:

Məqsədin bir BroadcastReceiver-dən bir Fəaliyyətdə bir üsul çağırmağı başa düşdüyüm üçün, bu nümunədə az qala bir interfeysdən necə istifadə etdiyimi izah edə bilərəm. Budur bu əsərlərin bir nümunəsi:

Əvvəlcə BroadcastReceiver-dən göndərmək istədiyiniz məlumatları ötürmək üçün bir interfeys yaradın. Məsələn, burada OnSampleReadyListener

ümumi final sinfi SampleReceiver BroadcastReceiver-ı genişləndirir { public static final String SAMPLE_DATA_EXTRA = "sample_extra"; xüsusi OnSampleReadyListener mListener; @SuppressWarnings ("istifadə olunmayan") ümumi SampleReceiver () {} ictimai SampleReceiver (OnSampleReadyListener dinləyicisi) { mListener = dinləyici; } @Override public void onReceive (Kontekst konteksti, Niyyət niyyəti) { final String someExampleData = purpose.getStringExtra (SAMPLE_DATA_EXTRA); mListener.onSampleDataReady (someExampleData); } ümumi interfeys OnSampleReadyListener { void onSampleDataReady (String someExampleData); }}

Sonra OnSampleReadyListener nümunəsini vermək üçün Fəaliyyət sinifinizi qurun və Yayımları dinləmək üçün Fəaliyyətinizi qurun:

ümumi sinif MainActivity AppCompatActivity tətbiqini OnSampleReadyListener tətbiq edir { xüsusi SampleReceiver mReceiver; @Override qorunan boşluq onCreate (@Nullable Bundle savedInstanceState) { super.onCreate (savedInstanceState); // Dinləyicinin bir nümunəsini alıcınıza ötürün ... mReceiver = yeni SampleReceiver (bu); }//..Yayım Alıcınızı dinləmək üçün Fəaliyyətinizi qurun ... // Alınan yayımlarla əlaqəli hər hansı bir məntiqi burada çalıştırın @Override ümumi boşluq onSampleDataReady (String someExampleData) { Log.d ("TAG", "Məlumat Alındı:" + someExampleData); }}

cavab 2:

1.Mainactivity main = yeni MainActivity ()

Main.doSomeWork ():

Bu yolla yalnız bu (yeni) fəaliyyət nümunəsinə zəng edə bilərsiniz. Bu siniflər üçün işləyir, lakin fəaliyyət ssenarisində biz cari Mainactivity nümunəsini istəyirik (indi ekranda mətn baxışı kimi bir şey)

2. Mainactivity örnəyini digər sinfə ötürə bilərsiniz və instance.doWork, ()

Bu tövsiyə edilmir, çünki bir kontekst keçəcəksiniz və lazım olmadıqda onu yaşada bilərsiniz.

3. Mainactivity-də statik bir metod yarada və MainActivity.doSomeWork () zəng edə bilərsiniz. Metodunuz digər statik olmayan şeylərə giriş əldə edə bilməz.

4. interfeysi əsas fəaliyyətdə tətbiq edə və bunu sinfə verə bilərsiniz. İnterface.doSomeWork-a zəng edə bilərsiniz. Bu, əksər hallarda getmək üçün ən yaxşı yoldur.

5. Singleton olaraq Mainactivty yaradın və MainActivity.getInstance () çağırın. DoSomeWork (). Bu nəzarətçi sinifləri üçün yaxşı işləyir.

6. Yayım alıcısı yaradın, fəaliyyətlə qeydiyyatdan keçin və kontekstə ehtiyac duyacağınız sinifdən çağırın.

7. İşləyicidən istifadə edir və mesaj ötürürsünüz.

8. greenbot kimi bir neçə mesaj ötürən kitabxanadan istifadə edin.


cavab 3:

Fəaliyyətinizdə ictimai bir metod təyin edin:

ümumi boşluq foo () { // şeylər}

Sonra sinifdə:

((YourActivity) getActivity) .foo ();

Bu Fragments və DialogFragments kimi istifadəçi interfeysi sinifləri üçün işləyir.


cavab 4:

Niyə yer üzündə buna bənzər bir şey etmək istərdiniz, fəaliyyətlər və mövcud səbəb yalnız UI göstərməkdir.

Beləliklə, əksər hallarda onların metodlarına daxil olmaq lazım deyil.

Ortaq bir məntiqiniz varsa, istifadə etmək istəyirsinizsə, MVP-MVVM- .. memarlıq dizayn nümunələrindən birini istifadə edərək ayırmağa çalışın. Və s.


cavab 5:

Əsas fəaliyyət nümunəsini həmin sinifin qurucusundan keçə bilərsiniz.

MyClass (Əsas aktivlik, ... ..)

{

this.mainactivity = əsas fəaliyyət;

}

mainactivity.method ();


cavab 6:

Niyyət niyyəti = yeni Niyyət (kontekst, TargetActivity.class);

startActivity (niyyət);

Qeyd: 'kontekst' vəziyyətə görə fərqli dəyərlərə sahib ola bilər. Xahiş edirəm StackOverflow