質問編集履歴

1 詳細の記載

edoooooo

edoooooo score 164

2016/10/13 19:17  投稿

本のサンプルコードを実行したいのですがエラーログが出ます。バージョンの問題なのでしょうか?
本のサンプルコードしたのですが、java.lang.RuntimeExceptionがでます。
他にも、java.lang.ClassNotFoundExceptionもでます。
右も左もわからず如何すればいいのでしょうか?
丸投げですみません。アドバイスをください。宜しくお願いします。
本気で学ぶAndroidアプリ開発入門 SDK5対応
のTODOリストアプリを作るコードです。
アドバイスをいただきたいです。宜しくお願いします。
MainActivityです。
```java
package com.yokmama.learn10.chapter06.lesson28;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.AppCompatActivity;
import android.widget.FrameLayout;
import java.util.List;
public class MainActivity extends AppCompatActivity {
   private List<Todo> mTodoList;
   private boolean mIsTablet = false;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       //ダミーデータ作成
       mTodoList = Todo.addDummyItem();
       //TODOリスト一覧を表示
       showTodoList();
       //タブレットレイアウトなら右側にフォーム画面を表示
       FrameLayout container2 = (FrameLayout) findViewById(R.id.container2);
       if (container2 != null) {
           mIsTablet = true;
           showTodoForm(mTodoList.get(0));
       }
   }
   @Override
   public void onBackPressed() {
       if (getSupportFragmentManager().getBackStackEntryCount() > 1) {
           //フォーム画面を開いている場合は画面を閉じる
           getSupportFragmentManager().popBackStack();
       } else {
           //リスト画面の場合は通常のバックキー処理(アプリを終了)
           super.onBackPressed();
       }
   }
   /**
    * TODOリスト一覧を表示
    */
   public void showTodoList() {
       String tag = TodoListFragment.TAG;
       getSupportFragmentManager().beginTransaction().replace(R.id.container,
               TodoListFragment.newInstance(), tag).commit();
   }
   /**
    * TODOフォーム画面を表示
    *
    * @param item TODOリストデータ
    */
   public void showTodoForm(Todo item) {
       String tag = TodoFormFragment.TAG;
       TodoFormFragment fragment;
       if (item == null) {
           fragment = TodoFormFragment.newInstance();
       } else {
           fragment = TodoFormFragment.newInstance(item.getColorLabel(),
                   item.getValue(), item.getCreatedTime());
       }
       if (!mIsTablet) {
           //スマートフォンレイアウトの場合はcontainerに表示
           getSupportFragmentManager().beginTransaction().replace(R.id.container,
                   fragment, tag).addToBackStack(tag).commit();
       }else{
           //タブレットレイアウトの場合はcontainer2に表示
           getSupportFragmentManager().beginTransaction().replace(R.id.container2,
                   fragment, tag).addToBackStack(tag).commit();
       }
   }
   public List<Todo> getTodoList() {
       return mTodoList;
   }
   /**
    * タブレットか判定.
    * @return
    */
   public boolean isTablet() {
       return mIsTablet;
   }
}
```
TODO.javaです。
```java
package com.yokmama.learn10.chapter06.lesson28;
import java.util.ArrayList;
import java.util.List;
/**
* Created by m_iwasaki on 15/03/12.
*/
public class
       Todo {
   private int colorLabel;
   private long createdTime;
   private String value;
   public static interface ColorLabel {
       public static final int NONE = 1;
       public static final int PINK = 2;
       public static final int INDIGO = 3;
       public static final int GREEN = 4;
       public static final int AMBER = 5;
   }
   public Todo(int colorLabel, String value, long createdTime) {
       this.colorLabel = colorLabel;
       this.value = value;
       this.createdTime = createdTime;
   }
   public int getColorLabel() {
       return colorLabel;
   }
   public void setColorLabel(int colorLabel) {
       this.colorLabel = colorLabel;
   }
   public String getValue() {
       return value;
   }
   public void setValue(String value) {
       this.value = value;
   }
   public long getCreatedTime() {
       return createdTime;
   }
   public void setCreatedTime(long createdTime) {
       this.createdTime = createdTime;
   }
   /**
    * テスト表示用にダミーのリストアイテムを作成.
    */
   public static List<Todo> addDummyItem() {
       List<Todo> items = new ArrayList<>();
       items.add(new Todo(Todo.ColorLabel.INDIGO, "猫に小判", System.currentTimeMillis() + 1));
       items.add(new Todo(Todo.ColorLabel.PINK, "猫の手も借りたい", System.currentTimeMillis() + 2));
       items.add(new Todo(Todo.ColorLabel.GREEN, "窮鼠猫を噛む", System.currentTimeMillis() + 3));
       items.add(new Todo(Todo.ColorLabel.AMBER,
               "猫は三年飼っても三日で恩を忘れる", System.currentTimeMillis() + 4));
       items.add(new Todo(Todo.ColorLabel.NONE, "猫も杓子も", System.currentTimeMillis() + 5));
       return items;
   }
}
```
TODOListAdapter.javaです。
```java
package com.yokmama.learn10.chapter06.lesson28;
import android.content.Context;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
public class TodoListAdapter extends ArrayAdapter<Todo> {
   /** フィールド */
   private LayoutInflater mInflator;
   public TodoListAdapter(Context context, List<Todo> objects) {
       super(context, 0, objects);
       mInflator = (LayoutInflater) context
               .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   }
   @Override
   public View getView(final int position, View convertView, ViewGroup parent) {
       ViewHolder holder;
       if (convertView == null) {
           convertView = mInflator.inflate(R.layout.item_list_row, parent, false);
           holder = new ViewHolder();
           holder.tvColorLabel = (TextView) convertView.findViewById(R.id.color_label);
           holder.tvValue = (TextView) convertView.findViewById(R.id.value);
           holder.tvCreatedTime = (TextView) convertView.findViewById(R.id.created_time);
           convertView.setTag(holder);
       } else {
           holder = (ViewHolder) convertView.getTag();
       }
       //値をセット
       String value = getItem(position).getValue();
       if (!TextUtils.isEmpty(value)) {
           holder.tvValue.setText(value);
       }
       //カラーラベルをセット
       int color = getItem(position).getColorLabel();
       holder.tvColorLabel.setBackgroundResource(getColorLabelResource(color));
       if (!TextUtils.isEmpty(value)) {
           holder.tvColorLabel.setText(value.substring(0, 1));
       }
       //日付をセット
       String createdtime = getCreatedTime(getItem(position).getCreatedTime());
       if (!TextUtils.isEmpty(createdtime)) {
           holder.tvCreatedTime.setText(createdtime);
       }
       return convertView;
   }
   /**
    * 現在年月をDate型返却.
    */
   public static String getCreatedTime(long createdTime) {
       Date date = new Date(createdTime);
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd/HH:mm");
       return sdf.format(date);
   }
   /**
    * カラーラベルのdrawableリソースIDを返却.
    *
    * @param color : カラー
    */
   private int getColorLabelResource(int color) {
       int resId = R.drawable.bg_colorlabel_grey;
       switch (color) {
           case Todo.ColorLabel.PINK:
               resId = R.drawable.bg_colorlabel_pink;
               break;
           case Todo.ColorLabel.INDIGO:
               resId = R.drawable.bg_colorlabel_indigo;
               break;
           case Todo.ColorLabel.GREEN:
               resId = R.drawable.bg_colorlabel_green;
               break;
           case Todo.ColorLabel.AMBER:
               resId = R.drawable.bg_colorlabel_amber;
               break;
       }
       return resId;
   }
   private class ViewHolder {
       TextView tvColorLabel;
       TextView tvCreatedTime;
       TextView tvValue;
   }
}
エラーログです。
```java
lesson28 E/Trace: error opening trace file: No such file or directory (2)
E/AndroidRuntime: FATAL EXCEPTION: main
E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.yokmama.learn10.chapter06.lesson28/com.yokmama.learn10.chapter06.lesson28.MainActivity}: android.view.InflateException: Binary XML file line #15: Error inflating class FragmentLayout
E/AndroidRuntime:    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2070)
E/AndroidRuntime:    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2095)
/AndroidRuntime:    at android.app.ActivityThread.access$600(ActivityThread.java:137)
/AndroidRuntime:    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1206)
/AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:99)
/AndroidRuntime:    at android.os.Looper.loop(Looper.java:213)
/AndroidRuntime:    at android.app.ActivityThread.main(ActivityThread.java:4786)
/AndroidRuntime:    at java.lang.reflect.Method.invokeNative(Native Method)
/AndroidRuntime:    at java.lang.reflect.Method.invoke(Method.java:511)
¥/AndroidRuntime:    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
/AndroidRuntime:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
/AndroidRuntime:    at dalvik.system.NativeStart.main(Native Method)
/AndroidRuntime: Caused by: android.view.InflateException: Binary XML file line #15: Error inflating class FragmentLayout
/AndroidRuntime:    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:698)
/AndroidRuntime:    at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
/AndroidRuntime:    at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
/AndroidRuntime:    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
/AndroidRuntime:    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
/AndroidRuntime:    at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:249)
/AndroidRuntime:    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106)
/AndroidRuntime:    at com.yokmama.learn10.chapter06.lesson28.MainActivity.onCreate(MainActivity.java:20)
/AndroidRuntime:    at android.app.Activity.performCreate(Activity.java:5008)
/AndroidRuntime:    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
AndroidRuntime:    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2034)
/AndroidRuntime:    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2095) 
/AndroidRuntime:    at android.app.ActivityThread.access$600(ActivityThread.java:137) 
/AndroidRuntime:    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1206) 
/AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:99) 
/AndroidRuntime:    at android.os.Looper.loop(Looper.java:213) 
/AndroidRuntime:    at android.app.ActivityThread.main(ActivityThread.java:4786) 
/AndroidRuntime:    at java.lang.reflect.Method.invokeNative(Native Method) 
/AndroidRuntime:    at java.lang.reflect.Method.invoke(Method.java:511) 
/AndroidRuntime:    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
/AndroidRuntime:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 
/AndroidRuntime:    at dalvik.system.NativeStart.main(Native Method) 
/AndroidRuntime: Caused by: java.lang.ClassNotFoundException: android.view.FragmentLayout
/AndroidRuntime:    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
/AndroidRuntime:    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
/AndroidRuntime:    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
/AndroidRuntime:    at android.view.LayoutInflater.createView(LayoutInflater.java:552)
/AndroidRuntime:    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:643)
/AndroidRuntime:    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
/AndroidRuntime:    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660)
/AndroidRuntime:    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)
/AndroidRuntime:    at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
/AndroidRuntime:    at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
/AndroidRuntime:    at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
/AndroidRuntime:    at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
/AndroidRuntime:    at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:249) 
/AndroidRuntime:    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106) 
/AndroidRuntime:    at com.yokmama.learn10.chapter06.lesson28.MainActivity.onCreate(MainActivity.java:20) 
AndroidRuntime:    at android.app.Activity.performCreate(Activity.java:5008) 
/AndroidRuntime:    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
/AndroidRuntime:    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2034) 
/AndroidRuntime:    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2095) 
/AndroidRuntime:    at android.app.ActivityThread.access$600(ActivityThread.java:137) 
/AndroidRuntime:    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1206) 
/AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:99) 
/AndroidRuntime:    at android.os.Looper.loop(Looper.java:213) 
/AndroidRuntime:    at android.app.ActivityThread.main(ActivityThread.java:4786) 
/AndroidRuntime:    at java.lang.reflect.Method.invokeNative(Native Method) 
/AndroidRuntime:    at java.lang.reflect.Method.invoke(Method.java:511) 
/AndroidRuntime:    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
/AndroidRuntime:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 
/AndroidRuntime:    at dalvik.system.NativeStart.main(Native Method) 
I/Process: Sending signal. PID: 5630 SIG: 9
```
字数制限にかからないように余分なファイル名と時間を削除しました。
サンプルコードには、いろいろな機能が付いていて、クラスのjavaコードのどれを乗せれば位いいのかもわかりません。
  • Java

    25143 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android

    10570 questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Android Studio

    6810 questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る