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

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

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

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

Android Studio

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

Q&A

解決済

2回答

1799閲覧

ActivityからViewに値を送る方法

CoC1216

総合スコア13

Android

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

Android Studio

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

0グッド

1クリップ

投稿2017/09/30 03:10

編集2018/08/04 13:29

###前提・実現したいこと
ボタンを押すとそのボタンに応じて円の色を変えたいです。

###該当のソースコード

Java

1 2import android.support.v7.app.AppCompatActivity; 3import android.os.Bundle; 4import android.view.View; 5 6public class MainActivity extends AppCompatActivity { 7 8 int button; 9 10 @Override 11 protected void onCreate(Bundle savedInstanceState) { 12 super.onCreate(savedInstanceState); 13 setContentView(R.layout.activity_main); 14 } 15 16 public void Button1(View view) { 17 button = 1; 18 } 19 20 public void Button2(View view) { 21 button = 2; 22 } 23}

java

1 2import android.content.Context; 3import android.graphics.Canvas; 4import android.graphics.Color; 5import android.graphics.Paint; 6import android.util.AttributeSet; 7import android.view.View; 8 9public class ViewClass extends View { 10 public ViewClass(Context context, AttributeSet attrs) { 11 super(context, attrs); 12 setFocusable(true); 13 } 14 15 int button = 1; 16 Paint paint = new Paint(); 17 18 @Override 19 protected void onDraw(Canvas canvas) { 20 super.onDraw(canvas); 21 22 paint.setStyle(Paint.Style.FILL_AND_STROKE); 23 24 switch (button) { 25 case 1: 26 paint.setColor(Color.RED); 27 canvas.drawCircle(100,100,100,paint); 28 break; 29 case 2: 30 paint.setColor(Color.BLUE); 31 canvas.drawCircle(100,100,100,paint); 32 break; 33 } 34 } 35}

xml

1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 android:orientation="vertical" 8 tools:context="com.penguinsoftware.test2.MainActivity"> 9 10 <Button 11 android:layout_width="wrap_content" 12 android:layout_height="wrap_content" 13 android:onClick="Button1" 14 android:text="" /> 15 16 <Button 17 android:layout_width="wrap_content" 18 android:layout_height="wrap_content" 19 android:onClick="Button2" 20 android:text="" /> 21 22 <com.penguinsoftware.test2.ViewClass 23 android:layout_width="wrap_content" 24 android:layout_height="wrap_content" /> 25 26</LinearLayout>

###試したこと
intentで送ろうとしたのですが、うまく行きませんでした。

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

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

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

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

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

guest

回答2

0

ベストアンサー

こうすればできるでしょう。肝はViewClass.javaに作ったメソッドに表示したい色を引数で渡し、invalidate()を呼びだせばいいということです。

activity_main.xml(抜粋)

XML

1 <com.penguinsoftware.test2.ViewClass 2 android:id="@+id/View1" 3 android:layout_width="wrap_content" 4 android:layout_height="wrap_content" />

MainActivity.java(抜粋)

java

1 public void Button1(View view) { 2 button = 1; 3 ((ViewClass) findViewById(R.id.View1)).changeCircleColor(button); 4 } 5 6 public void Button2(View view) { 7 button = 2; 8 ((ViewClass) findViewById(R.id.View1)).changeCircleColor(button); 9 }

ViewClass.java(抜粋)

Java

1 void changeCircleColor(int newbutton) { 2 button = newbutton; 3 invalidate(); // これによって再描画が行われてonDraw()が実行される 4 }

投稿2017/09/30 14:29

編集2017/10/01 01:39
keicha_hrs

総合スコア6768

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

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

0

下記の方針でできると思いますよ。
1-ViewClassにフィールド変数buttonにアクセスするメソッドを定義してください。
2-レイアウトファイルのViewClassにid属性を設定してください。
3-findViewByIdでViewClassのインスタンスを取得してください。
4-1で作成したメソッドを使いbuttonの色を変更してください。

投稿2017/09/30 13:19

yona

総合スコア18155

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問