Saya mendapatkan pengecualian dari judul ketika saya menjalankan aplikasi saya. Apa yang dilakukannya adalah memiliki file .txt dengan kata-kata untuk permainan Hangman dan saya pikir pengecualian dilemparkan ketika mengakses file. File saya, cuvinte.txt terletak di / assets /. Ini kode saya (saya melewatkan bagian layout / xml, yang berfungsi dengan baik):
public void onCreate() {
// all the onCreate() stuff, then this:
try {
AssetManager am = this.getAssets();
InputStream is = am.open("cuvinte.txt");
InputStreamReader inputStreamReader = new InputStreamReader(is);
BufferedReader b = new BufferedReader(inputStreamReader);
String rand;
while((rand=b.readLine())!=null){
cuvinte.add(rand);
}
} catch (IOException e) {
Toast.makeText(this, "No words file", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
newGame(newG);
}
public void newGame(View view){
Random rand = new Random();
String stringCuvant = cuvinte.get(rand.nextInt(cuvinte.size()));
cuvant.setText("");
System.out.println(stringCuvant);
for(int i = 0; i< stringCuvant.length(); i++){
cuvant.append("_ ");
}
incercari.setText(valIncercari);
}
Fungsi newGame () dipanggil saat tombol game baru ditekan dan di awal aktivitas, di fungsi onCreate ().
setText()
fungsi.Jawaban:
(Asumsi saja, sedikit info tentang stacktrace Pengecualian)
Saya pikir, baris ini,
incercari.setText(valIncercari);
melempar Exception karenavalIncercari
merupakanint
Jadi seharusnya demikian,
Atau
sumber
Integer.toString(valIncercari);
setText(int)
juga digunakan untuk mendapatkan sumber daya string oleh id. Dan di Android, semua id sumber daya memilikiint
nilai.Hanya ingin menunjukkan alasan lain kesalahan ini dapat terjadi adalah jika Anda menetapkan sumber string untuk satu terjemahan aplikasi Anda tetapi tidak memberikan sumber string default.
Contoh Masalah:
Seperti yang Anda lihat di bawah, saya punya sumber string untuk string bahasa Spanyol "get_started". Itu masih bisa direferensikan dalam kode, tetapi jika telepon tidak dalam bahasa Spanyol tidak akan memiliki sumber daya untuk memuat dan crash saat menelepon
getString()
.values-es / strings.xml
Referensi sumber daya
Logcat:
Solusi untuk Masalah ini
Mencegah ini cukup sederhana, pastikan Anda selalu memiliki sumber string default
values/strings.xml
sehingga jika telepon menggunakan bahasa lain, ia akan selalu memiliki sumber daya untuk kembali.values / strings.xml
values-en / strings.xml
values-es / strings.xml
values-de / strings.xml
sumber
Skenario lain yang dapat menyebabkan pengecualian ini adalah dengan DataBinding, yaitu ketika Anda menggunakan sesuatu seperti ini di tata letak Anda
Perhatikan bahwa variabel yang saya gunakan adalah Integer dan saya menugaskannya ke bidang teks dari TextView. Karena TextView sudah memiliki metode dengan tanda tangan
setText(int)
maka akan menggunakan metode ini alih-alih menggunakansetText(String)
dan memberikan nilai. Dengan demikian TextView menganggap nomor input Anda sebagai nilai sumber daya yang jelas-jelas tidak valid.Solusi adalah dengan memberikan nilai int Anda ke string seperti ini
sumber
Build
->Clean Project
di Android Studio untuk menghasilkan kembali kelas Binding Data.Masalah ini sebagian besar terjadi karena kesalahan dalam
setText()
metodeSolusi adalah sederhana, berikan
Integer
nilai Anda dengan mengonversi ke dalamstring
tipesumber
Kadang ini terjadi karena tidak menyukai sumber apa pun seperti jika saya ingin mengatur teks menjadi textview dari adaptor maka saya harus menggunakan
Jika Anda menulis sesuatu seperti
ini tidak akan berfungsi dan kadang-kadang kita tidak menemukan sumber daya dari file string.xml maka jenis kesalahan ini terjadi.
sumber
Menggunakan DataBinding dan pengaturan latar belakang ke edittext dengan sumber daya dari folder drawable menyebabkan pengecualian.
Larutan
Saya hanya mengubah latar belakang dari
android:background="@drawable/rectangle"
menjadiandroid:background="@null"
Bersihkan dan Bangun Kembali Proyek.
sumber
Anda menetapkan nilai numerik ke bidang teks. Anda harus mengonversi nilai numerik menjadi string dengan:
sumber