私はこれを初めて使っています。私は別の答えからいくつかのコードに従おうとしています。計算に使用される数字を入力するための3つのテキストフィールドがあり、その下のボタンはその下のテキストを答えに変更するはずです。アプリケーションを実行するとエラーは表示されませんが、ボタンを押すとアプリケーションがクラッシュし、ログにエラーメッセージが表示されます。これはコードです:ここではアンドロイドで電卓を作る。アプリはエラーなしでエミュレータに表示されますが、計算ボタンを押すとクラッシュします。
public class CalculatorActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
class NewActivity extends CalculatorActivity {
//Declare textviews as fields, so they can be accessed throughout the activity.
EditText editTextSubsPrevious;
EditText editTextSubsNow;
EditText editTextDays;
TextView calcText;
Button calcButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
//Bind the EditText views
editTextSubsPrevious = (EditText) findViewById(R.id.editTextSubsPrevious);
editTextSubsNow = (EditText) findViewById(R.id.editTextSubsNow);
editTextDays = (EditText) findViewById(R.id.editTextDays);
calcButton = (Button) findViewById(R.id.calcButton);{
View.OnClickListener onClickListener = new Button.OnClickListener() {
@Override
public void onClick(View v) {
//When the button is clicked, call the calculate method.
calculate();
}
};
}
}
public void calculate(){
//get entered texts from the edittexts,and convert to integers.
Double value1 = Double.parseDouble(editTextSubsPrevious.getText().toString());
Double value2 = Double.parseDouble(editTextSubsNow.getText().toString());
Double value3 = Double.parseDouble(editTextDays.getText().toString());
//do the calculation
Double difference = (value2 - value1)/7;
Double percent = (difference/325);
Double amount;
amount = value2 * Math.pow(1 + percent, value3);
calcText.setText(amount.toString());
}
}
}
}
はエラーメッセージです:ここで
FATAL EXCEPTION: main
Process: com.pausetheapp.futurefollowerandsubscribercalculator, PID: 3420
java.lang.IllegalStateException: Could not find method sendMessage(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'calcButton'
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:325)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
はXMLファイルです:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.pausetheapp.futurefollowerandsubscribercalculator.CalculatorActivity"
tools:showIn="@layout/activity_calculator">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/textViewTitle"
android:id="@+id/textViewTitle"
android:textAlignment="center"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/editTextSubsPrevious"
android:layout_marginTop="28dp"
android:layout_below="@+id/textViewTitle"
android:layout_centerHorizontal="true"
android:hint="@string/previousSubsTextField"
android:width="300dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/editTextSubsNow"
android:layout_below="@+id/editTextSubsPrevious"
android:layout_centerHorizontal="true"
android:layout_marginTop="24dp"
android:width="300dp"
android:hint="@string/currentSubsTextField" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/editTextDays"
android:hint="@string/daysTextField"
android:width="300dp"
android:layout_marginTop="30dp"
android:layout_below="@+id/editTextSubsNow"
android:layout_alignLeft="@+id/editTextSubsNow"
android:layout_alignStart="@+id/editTextSubsNow" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/accuracyText"
android:id="@+id/textViewAccuracy"
android:layout_below="@+id/editTextDays"
android:layout_alignLeft="@+id/editTextDays"
android:layout_alignStart="@+id/editTextDays"
android:textSize="10dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/calculateButton"
android:id="@+id/calcButton"
android:layout_marginTop="42dp"
android:layout_below="@+id/textViewAccuracy"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/calcDays"
android:id="@+id/calcText"
android:layout_marginTop="22dp"
android:textSize="25dp"
android:layout_below="@+id/calcButton"
android:layout_centerHorizontal="true"
android:gravity="center" />
私はちょうどに次の行を追加しましたjavaファイル
calcText = (TextView) findViewById(R.id.calcText);
を使用する必要がある他の
使用する必要があり、私はエラーが、それでもボタンを修正しました動作していません。 – PauseTheCat
あなたのコードにcalcTextを作成していないように見えるので、calcText(あなたが作成した場所が表示されないのでnull)でsetTextを呼び出そうとすると、アプリケーションがクラッシュします.. –
あなたのレイアウトファイルも共有してください。 – W0rmH0le