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

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

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

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

Android

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

Android Studio

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

Q&A

解決済

2回答

4541閲覧

ImageButtonを押したら次のアクティビティを開きたい。

ra3jp

総合スコア21

Java

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

Android

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

Android Studio

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

0グッド

0クリップ

投稿2016/07/06 02:35

編集2016/07/06 07:37

###前提・実現したいこと
アプリ開発を始めて1ヶ月ほどの初心者です。
AndroidStudioにて、アプリの開発中です。
レイアウトは完成しましたが、中身が上手く作れないので、質問しました。

やりたいこと
HomeScreen.javaのcontent_home_screen.xmlに置かれているImageButton(home_start)を押した際に、次のアクティビティである、gender.javaを開きたいです。
androidmanifestもいじる必要があれば教えていただきたいです。

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

エラーメッセージ
07-05 19:45:03.201 18049-18066/com.example.personal_deviation E/Surface: getSlotFromBufferLocked: unknown buffer: 0xaab8a2d0
###該当のソースコード

content_home_screen.xml

xml

1<ImageButton 2 android:id="@+id/home_start" 3 android:layout_width="252dp" 4 android:layout_height="62dp" 5 android:layout_gravity="center_horizontal|bottom" 6 android:layout_marginBottom="35dp" 7 android:src="@drawable/start_button" 8 android:onClick="Start" 9 android:background="#00000000" 10 android:scaleType="fitXY" />

HomeScreen.javaの試したコードは一番下にあります。

###試したこと
インターネットで調べたものを、以下のように3、4種類試しました。
初めは、android:onClick="onClick"
としていましたが、分かりにくかったので、Startに変更してみました。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

java

1public class HomeScreen extends AppCompatActivity { 2 @Override 3 protected void onCreate(Bundle savedInstanceState) { 4 super.onCreate(savedInstanceState); 5 setContentView(R.layout.content_home_screen); 6 } 7 8 public void Start(View v) { 9 Intent intent = new Intent(this, gender.class); 10 startActivity(intent); 11 } 12} 13 14/* 15 public void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17 setContentView(R.layout.activity_home_screen); 18 ImageButton homeStart = (ImageButton) findViewById(R.id.home_start); 19 assert homeStart != null; 20 homeStart.setOnClickListener(new View.OnClickListener() { 21 public void onClick(View v) { 22 Intent i = new Intent(HomeScreen.this, gender.class); 23 //intent.putExtra(EXTRA_HOME, homeStart); 24 startActivity(i); 25 } 26 }); 27 } 28} 29*/ 30 31 /* 32 @Override 33 public void onCreate(Bundle savedInstanceState) { 34 super.onCreate(savedInstanceState); 35 setContentView(R.layout.activity_home_screen); 36 ImageButton btn = (ImageButton)findViewById(R.id.home_start); 37 btn.setOnClickListener(new View.OnClickListener() { 38 @Override 39 public void onClick(View v){ 40 //TODO Auto-generated met hod stub 41 //インテントのインスタンス生成 42 Intent intent = new Intent(HomeScreen.this, gender.class); 43 //次画面のアクティビティ起動 44 45 startActivity(intent); 46 } 47 }); 48 } 49} 50*/ 51 52/* 53private final int HomeScreen = ViewGroup.LayoutParams.WRAP_CONTENT; 54@Override protected void onCreate(Bundle incle){ 55 super.onCreate(icicle); 56 ImageButton imagebutton = new ImageButton(this); 57 imgbutton.setImageResource(R.drawable.home_start); 58 imgbutton.setOnClickListener(this); 59 setContentView(imgbutton, new ViewGroup.LayoutParams(WC, WC)); 60} 61 62*/

2016/07/06 16:36
ご指摘の通り、書き方を訂正しました。

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

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

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

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

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

guest

回答2

0

ベストアンサー

とりあえずエラーにならないようにするには

Java

1 public void start(View v) { 2 switch (v.getId()) { 3 case R.id.home_start: 4 Intent intent = new Intent(getApplication(), Gender.class); 5 startActivity(intent); 6 7 break; 8 default: 9 break; 10 } 11 12 }

ここではボタンは1つですが、ボタンなどこのメソッドを呼ぶものが複数あるケースから
どのIDから呼ばれたのかを確認するためにgetId()を使います

  • getApplication()
    thisでもとりあえず動きますが、本格的なアプリになるとメモリの問題が出る可能性がある

  • クラスは大文字で始める

gender -> Gender

Activityの画面遷移先をAndroidManifestに登録する
参考

xml

1... 2 <application 3 ... 4 <activity 5 ... 6 </activity> 7 <activity 8 android:name=".Gender" 9 android:label="@string/app_name" > 10 </activity> 11 </application>

その他、エラーにはならないけれどあまりこんなことはしないという事として
(グループで開発する時に困ります。就職すると困る)

  • メソッドは小文字で始める

Start() -> start()

  • android:scaleType="fitXY" はCanvasのマトリックスで使うもので普通は使わない

投稿2016/07/06 05:06

編集2016/07/06 05:07
aja

総合スコア3733

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

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

ra3jp

2016/07/06 08:21

回答ありがとうございます。 ・gender.javaをGender.javaに変更しました。 ・onClickの中身をstartに変更しました。 ・AndroidManifestにActivityを追記しました。 新たな問題点です。 ・ビルドが通らなくなりました。 Error:Error converting bytecode to dex: Cause: java.lang.RuntimeException: Exception parsing classes ・android:scaleTyoe="fitXY"を無くすと、画像が大きくなってしまいます。
aja

2016/07/06 10:31

まずはClean upしてみましょう [Build]->[Clean Project] [Make Project] それから [Run] > android:scaleTyoe="fitXY"を無くすと、画像が大きくなってしまいます 画像は android:layout_width="252dp" android:layout_height="62dp" このdpを変えるかscaleTypeなどを使った方がいいです 参考: https://akira-watson.com/android/imageview_scaletype.html
ra3jp

2016/07/07 13:35

ありがとうございます。 CleanUpすることで、ビルドが通りました。 scaleTypeは使ってみたいと思います、ありがとうございます。 ビルドが通った後に、Genderが開かない問題がありましたが、 「setContentView(R.layout.activity_gender);」と記述していないのが原因でした。 これを記述した後は、正常に動作しました。 ありがとうございました!
guest

0

試したもの全てでできるはずです。ただ、1つ目の方法はあまり使わないので2つ目の方法に修正してください。

・ボタンを押した時の挙動を教えてください。
・gender.classはActivityを継承していますか?
・gender.classはマニフェストファイルに追記していますか?

・質問のフォーマットの使い方を間違えています。
・コードは専用の記述方法があるのでそちらに修正してください。
・初心者マークをつけましょう。

投稿2016/07/06 05:05

yona

総合スコア18155

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

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

ra3jp

2016/07/06 08:08

回答ありがとうございます。 ・ボタンを押した時には、画面は移動しているように見えますが、真っ白の画面が現れるだけになっています。 ・補足情報のjava、1行目にextendとしていますが、これは継承にはならないのでしょうか? ・追記しました。 ・失礼しました。コードの書き方、初心者マークの訂正しました。
yona

2016/07/06 08:21

画面遷移しているように思えます。 gender#onCreateでLog.dを使ってログ出力し、ボタンを押したあとにログが出るかを確認してください。
ra3jp

2016/07/07 13:36

画面遷移、していました。 結果、Gender.javaに「setContentView(R.layout.activity_gender);」と記述していないことが原因で、表示がされていなかったようです。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問