Android SDKで用意されているsimple_list_item_1を使うと文字化けとエラーが発生。Android Studio 1.0にて
目次
Android Studio 0.8.14を使っていたときは、何ともなかったのですが、Android Studio 1.0を使っていると、simple_list_item_1がおかしくなっていることに気が付きました。
元々のjavaファイル(MainActivity.java)と、TextViewのxmlファイル(list_item.xml)はこんな感じのコードです。
package edu.self.mylistview; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.widget.ArrayAdapter; import android.widget.ListView; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // データを準備 String[] items = {"item 3", "item 4", "item 5"}; // Adapterを準備 ArrayAdapter <String> adapter = new ArrayAdapter<String>(this, R.layout.list_items, items); // ListViewにAdapterを設置 ListView myListView = (ListView) findViewById(R.id.myListView); myListView.setAdapter(adapter); } }
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:padding ="5dp" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TextView>
simple_list_item_1が文字化け
ArrayAdapterの第2引数である、R.layout list_itemのところ(MainActivity.javaの19行目)を、android.R.layout.simple_list_item_1に変えてみます。
テキストタブを見ると、simple_list_item_1.xmlファイルを見ると、思い切り文字化けしています。
デザインタブに切り替えると、何やらエラーらしき画面が…。
ただし、エミュレーターでの実行画面はちゃんと表示されます。
エラー解決のための対策
Androidのdevelopersドキュメンテーション(新しいタブで開く)を見ると、それっぽいことが書かれていますが、
- なぜ文字化けするのか?
- どうやって解決できるのか?
肝心なことは分かりません。以下の方法を試してみましたが、すべてダメでした。この記事に辿り着いた方の、踏み台になれば幸いです。
1.プロジェクトを新しく立ち上げる
使っているプロジェクト特有の現象かと思い、新しいプロジェクトをいくつも立ち上げましたが、ダメでした。
2.Android SDKをアップグレードさせる
Android Studio1.0にアップグレードして間もなく、Android SDKのアップグレードを促す画面が出てきました。画面の指示に従って、SDKをアップグレードをさせてみましたが、これもダメ。関係なかった。
3.sdkフォルダをandroid studioの中に移す
エラーの後ろのほうで、”The following classes could not be found:”で、クラスが読み込めていないと言われています。ですが、Android Studio1.0からsdkフォルダはandroid studioの外に配置させる(新しいタブで開く)ようになっています。
あえて外に移してみたら、新しいパスを設定するように言われます。両者はなんだか矛盾しているような気がするので、この方法もダメ。
ちなみに…
android.R.simple_list_item1では激しく文字化けがしますが、android.R.layout.simple_list_item2では文字化けは起こりません。
ただしエミュレーターは止まってしまいます。どういうことなんでしょうかね?
〔参考サイト〕