質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

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

Android Studio

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

Q&A

1回答

4682閲覧

Variable '~~' is never used のエラーを解決したいです。

hiyokko-1010

総合スコア5

Java

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

Android Studio

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

0グッド

0クリップ

投稿2020/04/16 06:47

前提・実現したいこと

Android Studioでメニューリストをprivateメソッド化したいです。
言語はjavaです。

書籍を参照しながら、学習しているのですが、定食メニューリストをprivateメソッド化したいです。
privateメソッド化することで、表示されるメニューリストの切り替え処理を行いたいのですが、

Variable 'createTeishokuList' is never used

というエラーが表示されてしまいます。
一番上の @Override の直下にあたる、

private List<Map<String, Object>> createTeishokuList {

の "createTeishokuList" の部分です。上から15行目くらいの位置になります。

下記にコードを記載いたします。
また、他の部分にもエラーが出ているため、下記に記載させていただきます。
(createTeishokuList の部分にエラーが出ているため、それに付随してエラーになっているのかもしれません。)

ちなみに、書籍のandroid studioはver3.0ですので、現在のversionとの違いによって、書き方に違いがあるのかもしれません。

試したこと・調べたこと

調べたと言えるレベルではないのですが、他のページや参考にできそうなサイトを見る限り、
List<Map<String, Object>> data = new ArrayList<>();
というような記述が多く見られるため、そもそも private の後に書くこと自体、間違いなのではないか
と感じています。

長文で大変読みにくく、また、もっと自力で調べた方が良いとご指摘を受けるかとは思いますが、質問させていただきました。
ご回答いただければ幸いです。
どうぞ宜しくお願いいたします。

コード

Java

1public class MainActivity extends AppCompatActivity { 2 // リストビューを表すフィールド 3 private ListView _lvMenu; 4 // リストビューに表示するリストデータ 5 private List<Map<String, Object>> _menuList; 6 // SimpleAdapterの第4引数fromに使用する定数フィールド 7 private static final String[] FROM = {"name", "price"}; 8 // SimpleAdapterの第5引数toに使用する定数フィールド 9 private static final int[] TO = {R.id.tvMenuName, R.id.tvMenuPrice}; 10 11 12 @Override 13 protected void onCreate(Bundle savedInstanceState) { 14 super.onCreate(savedInstanceState); 15 setContentView(R.layout.activity_main); 16 17 private List<Map<String, Object>> createTeishokuList { 18 // 定食メニューリスト用のListオブジェクトを用意 19 List<Map<String, Object>> menuList = new ArrayList<>(); 20 // 「から揚げ定食」のデータを格納するMapオブジェクトの用意とmenuListへのデータ登録 21 Map<String, Object> menu = new HashMap<>(); 22 menu.put("name", "から揚げ定食"); 23 menu.put("price", 800); 24 menu.put("desc", "若鳥のから揚げにサラダ、ご飯と味噌汁がつきます"); 25 menuList.add(menu); 26 // 27 menu = new HashMap<>(); 28 menu.put("name", "ハンバーグ定食"); 29 menu.put("price", 850); 30 menu.put("desc", "手ごねハンバーグにサラダ、ご飯と味噌汁がつきます"); 31 menuList.add(menu); 32 // 33 menu = new HashMap<>(); 34 menu.put("name", "生姜焼き定食"); 35 menu.put("price", 780); 36 menu.put("desc", "豚の生姜焼きにサラダ、ご飯と味噌汁がつきます"); 37 menuList.add(menu); 38 // 39 menu = new HashMap<>(); 40 menu.put("name", "野菜炒め定食"); 41 menu.put("price", 700); 42 menu.put("desc", "野菜炒めにサラダ、ご飯と味噌汁がつきます"); 43 menuList.add(menu); 44 // 45 menu = new HashMap<>(); 46 menu.put("name", "焼き魚定食"); 47 menu.put("price", 880); 48 menu.put("desc", "旬の焼き魚にサラダ、ご飯と味噌汁がつきます"); 49 menuList.add(menu); 50 return; 51 52 // 画面部品ListViewを取得し、フィールドに格納 53 _lvMenu = findViewById(R.id.lvMenu); 54 // 定食メニューListオブジェクトをprivateメソッドを利用して用意し、フィールドに格納 55 _menuList = createTeishokuList(); 56 // SimpleAdapterを生成 57 SimpleAdapter adapter = new SimpleAdapter(MainActivity.this, _menuList, R.layout.row, FROM, TO); 58 // アダプタの登録 59 _lvMenu.setAdapter(adapter); 60 // リストタップのリスナクラス登録 61 _lvMenu.setOnItemClickListener(new ListItemClickListener()); 62 } 63 private class ListItemClickListener implements AdapterView.OnItemClickListener { 64 @Override 65 public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 66 // タップされた行のデータを取得 67 Map<String, Object> item = (Map<String, Object>) parent.getItemAtPosition(position); 68 // 定食名と金額を取得。Mapの値部分がObject型なのでキャストが必要 69 String menuName = (String) item.get("name"); 70 Integer menuPrice = (Integer) item.get("price"); 71 72 // インテントオブジェクトを生成 73 Intent intent = new Intent(MainActivity.this, MenuThanksActivity.class); 74 // 第2画面に送るデータを格納 75 intent.putExtra("menuName", menuName); 76 // MenuThanksActivityでのデータ受け取りと合わせるために金額にここで「円」を追加 77 intent.putExtra("menuPrice", menuPrice + "円"); 78 // 第2画面の起動 79 startActivity(intent); 80 } 81 } 82 83 } 84}

エラー部分

上から15行目

private List<Map<String, Object>> createTeishokuList {

の "createTeishokuList" の部分に、"Variable 'createTeishokuList' is never used" のエラー表示。

上らか53行目(コードの上から2/3あたりの位置の return; の後)

_menuList = createTeishokuList();

の"createTeishokuList()"の部分に、"Method call expected"のエラー表示。

上から59行目

_lvMenu.setOnItemClickListener(new ListItemClickListener());

の"ListItemClickListener()" の部分に、"cannot resolve symbol 'ListItemClickListener'" のエラー表示。

上から61行目

private class ListItemClickListener implements AdapterView.OnItemClickListener {

の "private" の部分に、"Modifier 'private' not allowed here"のエラー表示。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

とりあえず文法的には

java

1private List<Map<String, Object>> createTeishokuList {

から始まって、

return;

があって、その後に同じスコープで処理が書かれているところに違和感。

本来は

java

1 return menu; 2}

で終わってから次の処理なんじゃないの?

あと、menuインスタンスを何度も上書きしてるのもおかしいし、まぁ色々おかしいんだけど、ひとつひとつ検証したらキリがなさそうなんで。

投稿2020/04/16 06:57

gentaro

総合スコア8947

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問