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

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

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

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

Q&A

2回答

8199閲覧

なぜ、Androidのアプリが停止してしまうのか教えていただけないでしょうか?

n236007k

総合スコア8

Android Studio

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

0グッド

1クリップ

投稿2017/02/22 08:07

編集2022/01/12 10:55

###前提・実現したいこと
android studioで体重管理アプリをつくろうとしています。ボタンを押して、数値の変更を行うプログラムです。OSはwindows10です。
###発生している問題・エラーメッセージ
エミュレーターの実行はできました。しかし、ボタンを押してみると、アプリが停止してしまいます。

###該当のソースコード
package com.example.rhythm.myweight;

import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;

import java.math.BigDecimal;
import java.util.Calendar;

public class MainActivity extends AppCompatActivity {

private BigDecimal mWeight = new BigDecimal("50.0"); //体重の初期設定 private Calendar mCal = Calendar.getInstance(); //日付 public static class MainDialogFragment extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle("保存処理"); builder.setMessage("保存します"); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //保存処理 } }); return builder.create(); } } public static class DatePickerFragment extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); return new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth){ ((MainActivity)getActivity()).setCalendar(year, monthOfYear, dayOfMonth); } }, year, month, day); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); showData(); } public void onSaveButtonTapped(View view) { DialogFragment newFragment = new MainDialogFragment(); newFragment.show(getFragmentManager(), "MainFragmentDialog"); } public void onDateButtonTapped(View view) { DialogFragment picker = new DatePickerFragment(); picker.show(getFragmentManager(), "datePiker"); } public void setCalendar(int year, int month, int day){ mCal.set(year, month, day); showData(); } private void showData(){ Button weight = (Button) findViewById(R.id.weight); weight.setText(String.valueOf(mWeight)); String today = mCal.get(Calendar.YEAR) + "/" + (mCal.get(Calendar.MONTH) + 1) + "/" + mCal.get(Calendar.DATE); Button date = (Button)findViewById(R.id.date); date.setText(today); } public void onChangeWeughtButtonTapped(View view){ switch (view.getId()) { case R.id.plus_weight: mWeight = mWeight.add(new BigDecimal("0.1")); break; case R.id.minus_weight: break; } showData(); } public void onChangeDateButtonTapped(View view){ switch (view.getId()) { case R.id.plus_date: mCal.add(Calendar.DATE, 1); break; case R.id.minus_date: mCal.add(Calendar.DATE, -1); break; } showData(); }

}

以下がエラーロゴです
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.rhythm.myweight, PID: 2211
java.lang.IllegalStateException: Could not find method onChangeWeughtButtonTapped (MainActivity)(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'plus_weight'
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284)
at android.view.View.performClick(View.java:5610)
at android.view.View$PerformClick.run(View.java:22260)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

###試したこと
Target SDKを変えてみました。

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

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

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

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

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

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

yona

2017/02/22 08:09

エラーログを記載してください。
guest

回答2

0

R.id.plus_weight
が無いと言っていると思います。
打ち間違いは無いですか?

投稿2020/04/03 10:48

masakifukuta

総合スコア58

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

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

0

クリックしたボタンが記載されているレイアウトファイルで、ボタンに設定されているonclick属性の値が誤っているようですね。

また、コードとエラーログはコード用の記述に修正してください。

投稿2017/02/22 09:21

yona

総合スコア18155

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

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

n236007k

2017/02/22 10:27

onclick属性についてですが、Method ○○is never usedになってしまうのですが、どのような原因が考えられるのでしょうか?
yona

2017/02/22 10:30

エラーメッセージだけでなく、どのファイルのどこ箇所に出ているかがわからないと回答なんてできないですよ。 また、コードの記述方法の修正をしてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問