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

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

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

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

Android

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

Android Studio

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

Q&A

解決済

2回答

3436閲覧

RecyclerViewの行クリックでのstartActivityが構文エラーとなる

jun74

総合スコア338

Java

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

Android

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

Android Studio

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

0グッド

0クリップ

投稿2019/07/27 04:48

編集2019/07/27 04:51

前提・実現したいこと

RecyclerViewの行クリックでのstartActivityがエラーとなるがどのようにすれば呼び出せるようになるかが分からないです。

発生している問題・エラーメッセージ

startActivityがAndroid Studioで構文エラーとなる。

該当のソースコード

java

1 2public class AlarmsAdapter extends RecyclerView.Adapter<AlarmsAdapter.ItemViewHolder> { 3 4 @Override 5 public void onBindViewHolder(final ItemViewHolder holder, final int position) { 6 holder.sw_alarm.setChecked(m_sw_alarm.get(position)); 7 holder.t_time.setText(m_t_time.get(position)); 8 holder.t_alarm_name.setText(m_t_alarm_name.get(position)); 9 //アラーム行クリック 10 holder.row_layout.setOnClickListener(new View.OnClickListener() { 11 @Override 12 public void onClick(View v) { 13 //アラーム行クリック処理 14 //***/> 15 // アラーム設定画面に更新モードで遷移 16 Intent intent = new Intent(); 17 intent.setClassName("com.a.b", "com.a.b.AlarmActivity"); 18 intent.putExtra("mode", "upd"); 19 intent.putExtra("position", position); 20 startActivity(intent); 21 } 22 }); 23

試したこと

Android Studioの構文エラー時のビックリマークの対応で、
ContextCompat.startActivityとかにしてもカッコ内の引き渡す引数が分からなく、手詰まりに。
なお、Activityから直接呼び出すときは問題なく呼び出せている。

補足情報(FW/ツールのバージョンなど)

Android Studio3.4

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

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

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

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

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

guest

回答2

0

Android Studio がビックリマークを付けているのは, startActivity がそのクラスのメソッドでは無いからと思います.
「Activityから直接呼び出すときは問題なく呼び出せ」るのは, startActivity が Context のメソッドであり, Activity は Context のためです.

このような場合, 処理の分担として「Activity 遷移は Activity に任せる」ことにし, AlarmsAdapter のコンストラクタ等でこの Adapter の設定される RecyclerView の属する Activity を得ておき, その Activity にアラーム設定画面へ遷移するメソッドを作成した上で, onClick 内ではそのメソッドを呼び出す形にするのは如何でしょうか.

java

1//RecyclerView の属するActivity 2class RecyclerActivity{ 3 : 4 // アラーム設定画面に更新モードで遷移 5 void startAlarmActivity(int position) { 6 Intent intent = new Intent(); 7 intent.setClassName("com.a.b", "com.a.b.AlarmActivity"); 8 intent.putExtra("mode", "upd"); 9 intent.putExtra("position", position); 10 startActivity(intent); 11 } 12 : 13}

java

1public class AlarmsAdapter{ 2 private RecyclerActivity activity; 3 AlarmsAdapter(RecyclerActivity activity) { 4 this.activity = activity; 5 } 6 : 7 public void onBindViewHolder(final ItemViewHolder holder, final int position) { 8 : 9 holder.row_layout.setOnClickListener(new View.OnClickListener() { 10 @Override 11 public void onClick(View v) { 12 : 13 activity.startAlarmActivity(position); 14 } 15 } 16 : 17 } 18}

投稿2019/07/27 05:33

jimbe

総合スコア12646

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

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

jun74

2019/07/27 05:45

ご回答頂きありがとうございます。 とりあえずは、「v.getContext().startActivity(intent);」で呼び出せたので、そのまま進めたいと考えます。 1本それなりに動くアプリは作れたのですが、javaの基本が未だに理解しきれず。。
jimbe

2019/07/27 06:00

これ以上の規模になってきますと, 各クラスの役割分担などをイメージされながら開発を進められますと, 「オブジェクトらしい」感じになってくるかと思います.
guest

0

自己解決

startActivity(intent);

v.getContext().startActivity(intent);
に変更し無事呼び出せるようになりました。

投稿2019/07/27 05:06

jun74

総合スコア338

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問