cari

Rumah  >  Soal Jawab  >  teks badan

android - 为什么用new方法构造的Activity对象,其中的View成员变量是为空的?

正如标题所言,View成员变量已经在Activity的onCreate方法中,通过findViewById方法初始化了。但在另一个类中,用通过new方法构造的Activity对象来执行封装好的公有方法时,发现其中的View成员变量是空的。具体代码如下(new MainActivity().select(selectCity)这句调用Activity的方法):

错误类型是

错误提示是指向下面这句

然后,调试结果如下

发现这里的View对象是为空的。然后,我换成发送广播的方式,让MainActivity接收广播,这样是可以的,调试结果如下:

发现mCityTextView不是空的。

对比上面的情况,我觉得通过findViewById方法初始化的View对象,只属于Activity这个类本身,所以由它使用是没问题的。但是通过new方法构造的Activity对象,得到的是没有初始化的View对象。所以究竟是怎么回事呢???

巴扎黑巴扎黑2802 hari yang lalu612

membalas semua(7)saya akan balas

  • 怪我咯

    怪我咯2017-04-17 17:26:36

    Jalannya agak liar. new MainActivity() tidak mengikut kitaran hayat Activity Contohnya, jika anda memulakan kawalan dalam onCreate(), jika anda memanggil select() secara langsung, ia sudah tentu akan menjadi penunjuk nol.

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:26:36

    Aktiviti, Perkhidmatan dan ContentProvider tidak boleh mendapatkan tika dalam kaedah baharu ("kejadian tidak normal" akan menjadi lebih sesuai Aktiviti, Perkhidmatan, Penerima Siaran dan Penyedia Kandungan semuanya mempunyai kitaran hayat. Tidak disyorkan untuk menambahkannya pada komponen . Pembolehubah statik atau kaedah yang ditakrifkan oleh panggilan luaran.

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:26:36

    Saya tidak tahu sama ada anda bercakap tentang Aktiviti sebagai komponen Aktiviti Android Semasa membina komponen Aktiviti, anda perlu melaksanakan kaedah lampiran dan memasukkan objek seperti Konteks, Tetingkap, dll.; sebab mengapa Paparan kosong adalah kerana tiada objek Tetingkap attach;
    Objek Tetingkap ialah bekas semua Pandangan

    balas
    0
  • PHPz

    PHPz2017-04-17 17:26:36

    Ini bukan aktiviti yang anda mahukan.
    Sila berikan rujukan kepada aktiviti tersebut.

    balas
    0
  • 巴扎黑

    巴扎黑2017-04-17 17:26:36

    Melihat kod tersebut, anda telah pun menulis getActivity() sendiri sebelum ini. Cuma tukarkan Aktiviti yang diperolehi kepada MainActivity
    Tiada kaedah kitaran hayat untuk mencipta Aktiviti secara langsung

    balas
    0
  • 阿神

    阿神2017-04-17 17:26:36

    Masalah saya di sini adalah kerana statik tidak ditetapkan untuk pembolehubah, jadi apabila objek baharu keluar, pembolehubah akan kosong dan perlu dimulakan semula. Eh, saya tidak lulus pengetahuan asas. . Tetapi saya masih ingin mengucapkan terima kasih atas jawapan anda! !

    balas
    0
  • 黄舟

    黄舟2017-04-17 17:26:36

    Bukankah lebih mudah untuk menggunakan panggil balik antara muka dalam kes ini?

    balas
    0
  • Batalbalas