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

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

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

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

Q&A

0回答

2184閲覧

android、fragment内でcanvasを使う方法

ken0625

総合スコア40

Android

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

0グッド

0クリップ

投稿2015/10/03 17:32

fragmentTabHostを利用しており、タブを表示させることはできたのですが、そのフラグメントのxmlファイル内で独自ビューを作りviewを継承したクラスでcanvasを利用したのですが、一切表示されません。いろいろ試したところどうやらそもそもviewを継承したクラスが一切呼び出されてないようなのです。

以下ソースコードです
MainActivity内のgoal()メソッドが呼び出されたらタブが追加されるようにしました。
それだけだとonCreate()の時点でエラーが起こるので何もないタブを2つ最初に入れておいてそれは見えないようにしておきました。
それ以外のコードは省略します。

###MainActivity.java

protected void onCreate(Bundle savedInstanceState) { Log.d("debug", "debug1"); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mode=MODE_CREATE1; //textSetting = (TextView) findViewById(R.id.textView); FragmentTabHost host = (FragmentTabHost) findViewById(android.R.id.tabhost); host.setup(this, getSupportFragmentManager(), R.id.content); tab1 = host.newTabSpec("Player1").setIndicator("Player1"); tab2 = host.newTabSpec("Player2").setIndicator("Player2"); host.addTab(tab1, kariAnswer.class, null); host.addTab(tab2, kariAnswer.class, null); host.getTabWidget().getChildAt(0).setVisibility(View.GONE); host.getTabWidget().getChildAt(1).setVisibility(View.GONE); } private void goal(){ FragmentTabHost host = (FragmentTabHost) findViewById(android.R.id.tabhost); host.setup(this, getSupportFragmentManager(), R.id.content); tab1 = host.newTabSpec("Player1").setIndicator("Player1"); Bundle bundle_p1 = new Bundle(); bundle_p1.putSerializable("lines_yoko", this.line_yoko_state); bundle_p1.putSerializable("lines_tate", this.line_tate_state); bundle_p1.putSerializable("floors", this.floor_state); bundle_p1.putInt("chara_i", chara1_i); bundle_p1.putInt("chara_j", chara1_j); host.addTab(tab1, Answer.class, bundle_p1); tab2 = host.newTabSpec("Player2").setIndicator("Player2"); Bundle bundle_p2 = new Bundle(); bundle_p2.putSerializable("lines_yoko", this.line_yoko_state_P2); bundle_p2.putSerializable("lines_tate", this.line_tate_state_P2); bundle_p2.putSerializable("floors", this.floor_state_P2); bundle_p2.putInt("chara_i", chara2_i); bundle_p2.putInt("chara_j", chara2_j); host.addTab(tab2, Answer.class, bundle_p2); }

###Answer.java

private Answer_view answer_view; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { context = getActivity(); View rootView = inflater.inflate(R.layout.fragment_main, container,false); Bundle b = getArguments(); this.answer_view =(Answer_view)rootView.findViewById(R.id.Answer_view); answer_view.context=context; answer_view.line_yoko_state =(int[][]) b.getSerializable("lines_yoko"); Log.d("answer",Integer.toString(answer_view.line_yoko_state[0][0])); answer_view. line_tate_state = (int[][]) b.getSerializable("lines_tate"); answer_view.floor_state = (int[][]) b.getSerializable("floors"); answer_view.chara_i = b.getInt("chara_i"); answer_view.chara_j = b.getInt("chara_j"); answer_view.character = new Character(answer_view.chara_i, answer_view.chara_j, context); answer_view.invalidate(); return rootView; }

###Answer_view.java

package com.example.sonekenichiro.game1; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.util.Log; import android.view.View; import java.net.ContentHandler; /** * Created by sonekenichiro on 2015/09/29. */ public class Answer_view extends View { Line line[][] = new Line[6][5]; public int line_yoko_state[][]; Line_tate line_tate[][] = new Line_tate[5][6]; public int line_tate_state[][]; Floor floor[][] = new Floor[6][6]; public int[][] floor_state; public Character character; int chara_i; int chara_j; Context context; public static final int Line_NASHI =0; public static final int Line_KABE =1; public static final int Line_HAKKEN =2; public static final int MODE_BATTLE=1; public Answer_view(Context context,AttributeSet attrs){ super(context,attrs); } public void onDraw(Canvas c){ for (int i = 0; i < 6; i++) { for (int j = 0; j < 6; j++) { floor[i][j] = new Floor(24 + i * 174, 60.5f + j * 214,context); } } for (int i = 0; i < 6; i++) { for (int j = 0; j < 5; j++) { Log.d("answer_view", Integer.toString(line_yoko_state[i][j])); line[i][j] = new Line(24 + i * 173, 272 + j * 214,1); if(line_yoko_state[i][j]==Line_KABE){ line_yoko_state[i][j]=Line_HAKKEN; } } } for (int i = 0; i < 5; i++) { for (int j = 0; j < 6; j++) { line_tate[i][j] = new Line_tate(195 + i * 174, 58 + j * 214,1); if(line_tate_state[i][j]==Line_KABE){ line_tate_state[i][j]=Line_HAKKEN; } } } Paint paint = new Paint(); paint.setAntiAlias(true); paint.setColor(Color.BLACK); paint.setStrokeWidth(16); paint.setStyle(Paint.Style.STROKE); c.drawRect(16, 52, 1068, 1350, paint); for (int i = 0; i < 6; i++) { for (int j = 0; j < 5; j++) { line[i][j].onDraw(c, line_yoko_state[i][j]); } } for (int i = 0; i < 5; i++) { for (int j = 0; j < 6; j++) { line_tate[i][j].onDraw(c,line_tate_state[i][j]); } } for (int i = 0; i < 6; i++) { for (int j = 0; j < 6; j++) { floor[i][j].onDraw(c,floor_state[i][j]); } } character.onDraw(c); } }

###fragment_main

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <view android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/Answer_view" class="com.example.sonekenichiro.game1.Answer_view"/> </RelativeLayout>

どうしたらキャンバスクラスが使えるようになるでしょうか。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問