1. TOPTOP
  2. Webサービス
  3. Android

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が文字化け

android_simple_list_item1_1

ArrayAdapterの第2引数である、R.layout list_itemのところ(MainActivity.javaの19行目)を、android.R.layout.simple_list_item_1に変えてみます。

テキストタブを見ると、simple_list_item_1.xmlファイルを見ると、思い切り文字化けしています。

android_simple_list_item1_2

デザインタブに切り替えると、何やらエラーらしき画面が…。

android_simple_list_item1_3

ただし、エミュレーターでの実行画面はちゃんと表示されます。

エラー解決のための対策

Androidのdevelopersドキュメンテーション(新しいタブで開く)を見ると、それっぽいことが書かれていますが、

  • なぜ文字化けするのか?
  • どうやって解決できるのか?

肝心なことは分かりません。以下の方法を試してみましたが、すべてダメでした。この記事に辿り着いた方の、踏み台になれば幸いです。

1.プロジェクトを新しく立ち上げる

使っているプロジェクト特有の現象かと思い、新しいプロジェクトをいくつも立ち上げましたが、ダメでした。

2.Android SDKをアップグレードさせる

android_simple_list_item1_4

Android Studio1.0にアップグレードして間もなく、Android SDKのアップグレードを促す画面が出てきました。画面の指示に従って、SDKをアップグレードをさせてみましたが、これもダメ。関係なかった。

3.sdkフォルダをandroid studioの中に移す

android_simple_list_item1_5

エラーの後ろのほうで、”The following classes could not be found:”で、クラスが読み込めていないと言われています。ですが、Android Studio1.0からsdkフォルダはandroid studioの外に配置させる(新しいタブで開く)ようになっています。

あえて外に移してみたら、新しいパスを設定するように言われます。両者はなんだか矛盾しているような気がするので、この方法もダメ。

ちなみに…

android_simple_list_item1_6

android.R.simple_list_item1では激しく文字化けがしますが、android.R.layout.simple_list_item2では文字化けは起こりません。

android_simple_list_item1_7

ただしエミュレーターは止まってしまいます。どういうことなんでしょうかね?

〔参考サイト〕