Di AndroidStudio, ketika saya membuat proyek menggunakan aktivitas kosong, saya mendapatkan potongan kode berikut di MainActivity.java
file:
package my.company.my_proj;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
tempat kelas samar bernama R
digunakan. Apa tujuan kelas ini R
?
android.R
?Apa R: Tidak ada yang sangat misterius tentang R. Ini hanya sebuah kelas yang memiliki banyak subkelas statis, buka di gerhana dan lihat (di bawah gen /).
Setiap anggota kelas ini adalah salah satu dari dua hal: 1) kelas akhir statis atau 2) bilangan bulat final statis yang unik sehubungan dengan anggota lain dari kelas mereka.
Mengapa begitu samar: Sangat mudah untuk membuat bingung karena R secara otomatis dihasilkan oleh semut. Ini samar karena Anda tidak seharusnya "menyentuhnya" secara manual (tentu saja Anda bisa, tetapi perubahan Anda akan otomatis dihapus saat dibuat ulang). Ini juga samar karena terkadang eclipse secara otomatis mengimpor file R standar Android (seperti yang dibahas dalam jawaban di atas)
Mengapa selalu yang pertama tidak dapat diselesaikan: R mengikuti aturan kelas dan paket Java dengan tepat, tidak ada yang istimewa tentang bagaimana R bertindak sehubungan dengan impor. R akan secara otomatis ditempatkan dalam paket yang ditentukan oleh entri paket di file manifes Anda
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="package.which.will.contain.R.and.probably.the.main.package.in.the.application" android:versionName="8.6.2011" android:versionCode="1"> <uses-sdk android:minSdkVersion="13" />
Untuk melihat paket milik apa file R Anda, cukup buka folder gen / di eclipse (tampilan paket). Anda akan melihat satu paket terdaftar di sana, itu akan memiliki nama yang Anda tentukan di manifes Anda. Cobalah untuk menghapusnya, itu akan kembali jika semua sumber daya Anda mengikuti aturan penamaan yang benar dan semua file xml Anda mengikuti aturan xml yang benar dan jika build secara otomatis diaktifkan di gerhana.
Kunci untuk memahami file R adalah dengan menyadari bahwa ia ada dalam paket yang sama dengan kelas lain meskipun ia berada di direktori yang berbeda dari file lain yang termasuk dalam paket "utama" Anda. Setelah Anda memahami ini dan memahami sintaks dan penamaan file sumber daya, pemecahan masalah dengan R mudah.
sumber
R adalah nama sumber daya Anda. Sumber daya apa pun yang Anda akses
R.$FOLDER.$RESOURCE
atau sesuatu yang sangat mirip.Jika tidak dapat diselesaikan, pastikan jalurnya benar dan sumber daya yang dirujuk ada (peka huruf besar-kecil; sertakan ekstensi).
Juga, bagian yang membingungkan (bagi saya, bagaimanapun) adalah bahwa ada dua yang berbeda
R
. Jika Anda mendapatkan banyak kesalahan "Tidak dapat diselesaikan", coba lihat apa yang Anda impor. Coba ubah atau hapus. Atau Anda dapat mencoba membersihkan proyek Anda (PERINGATAN: Terkadang hal itu memperburuk keadaan).sumber
R
file saya . Kadang-kadang, langkah ini melewatkan langkah "regenerasi" yang membuat saya tidak (atau kosong)R
danR
diprogram untuk secara otomatis membatalkan perubahan yang dibuat dengan tangan.Android R.java adalah file yang dibuat secara otomatis oleh AAPT (Alat Pengemasan Aset Android) yang berisi ID sumber daya untuk semua sumber daya direktori res /. Jika Anda membuat komponen apa pun di file activity_main.xml, id untuk komponen terkait secara otomatis dibuat di file ini. Id ini bisa digunakan di file sumber aktivitas untuk melakukan tindakan apa pun pada komponen.
sumber