我是Android的初学者。刚刚开始研究计算器应用程序,不知道为什么应用程序一直在崩溃。
我有两项活动...... MainActivity和CalculatorActivity
MainActivity:
public class MainActivity extends AppCompatActivity
{
Button calcubtn;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
calcubtn = (Button) findViewById(R.id.calculatorbtn);
calcubtn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
Intent calculator = new Intent(MainActivity.this, CalculatorActivity.class);
startActivity(calculator);
}
});
}
}
MainActivity布局:
<?xml version="1.0" encoding="utf-8"?>
<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"
tools:context="com.example.rfkha.myfirstapp.MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="13dp"
android:textSize="27sp"
android:textColor="@android:color/holo_red_light"
android:text="@string/functions_text" />
<Button
android:id="@+id/calculatorbtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@+id/textView"
android:layout_marginStart="43dp"
android:layout_marginTop="70dp"
android:text="@string/calcu_string"
/>
</RelativeLayout>
计算器活动:(即儿童活动)
在活动课程中,我添加了implements View.OnclickListener
。我在stackoverflow中找到了它。我认为问题出在这个问题上。此外,它还需要使用关键字abstract
将其与活动类一起使用,所以我也使用了它。
public abstract class CalculatorActivity extends AppCompatActivity implements View.OnClickListener {
Button btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, zerobtn, dotbtn, equalbtn, minusbtn, sumbtn, divbtn, mulbtn;
double num1, num2;
boolean sum, minus, div, mul;
EditText textarea= (EditText) findViewById(R.id.textarea);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
btn1 = (Button) findViewById(R.id.btn1);
btn1.setOnClickListener(this);
(((Same Code for buttons upto 9 and SUM, MINUS, DIVISION and MULtiplication Buttons)))
}
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.btn1: {
textarea.setText(textarea.getText()+"1");
break;
}
case R.id.btn2: {
textarea.setText(textarea.getText()+"2");
break;
}
case R.id.btn3:
((((( And So on... Upto Button 9 ))))))
case R.id.zerobtn: {
textarea.setText(textarea.getText()+"0");
break;
}
case R.id.dotbtn: {
textarea.setText(textarea.getText()+".");
break;
}
case R.id.sumbtn: {
num1=Double.parseDouble(textarea.getText().toString());
sum=true;
textarea.setText(null);
break;
}
(((((Likewise for Minus, Division and Multiplication buttons))))))))))
case R.id.equalbtn:
{
if (num1!=0)
{
num2=Double.parseDouble(textarea.getText().toString());
if (sum) {
textarea.setText(num1+num2+"");
sum=false;
}
else if(mul) {
textarea.setText(num1*num2+"");
mul=false;
}
else if(div) {
textarea.setText(num1/num2+"");
div=false;
}
else if(minus) {
textarea.setText(num1-num2+"");
minus=false;
}
}
else{
Toast.makeText(getApplicationContext(), "First select a number!!", Toast.LENGTH_SHORT);
}
break;
}
}
}
}
计算器活动布局:
<LinearLayout 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:orientation="vertical"
android:weightSum="1"
tools:context="com.example.rfkha.myfirstapp.CalculatorActivity">
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="13dp"
android:layout_marginTop="8dp"
android:gravity="center_horizontal"
android:text="@string/calculatortxt"
android:textSize="25sp" />
<EditText
android:id="@+id/textarea"
android:layout_width="351dp"
android:layout_height="154dp"
android:layout_marginStart="16dp"
android:ems="10"
android:hint="@string/resultsString"
android:textSize="33sp"
android:textAlignment="textEnd"
android:padding="11dp"
android:inputType="textPersonName" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:weightSum="1">
<Button
android:id="@+id/clearbt"
android:layout_width="293dp"
android:layout_height="51dp"
android:text="@string/cetxt"
android:textSize="24sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center_horizontal"
android:orientation="horizontal">
<Button
android:id="@+id/btn7"
android:layout_width="68dp"
android:layout_height="51dp"
android:text="7"
android:textSize="24sp" />
<Button
android:id="@+id/btn8"
android:layout_width="68dp"
android:layout_height="51dp"
android:text="8"
android:textSize="24sp" />
<Button
android:id="@+id/btn9"
android:layout_width="68dp"
android:layout_height="51dp"
android:text="9"
android:textSize="24sp" />
<Button
android:id="@+id/mulbtn"
android:layout_width="68dp"
android:layout_height="51dp"
android:layout_marginStart="27dp"
android:text="x"
android:textSize="18sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center_horizontal"
android:orientation="horizontal">
<Button
android:id="@+id/btn4"
android:layout_width="68dp"
android:layout_height="51dp"
android:text="4"
android:textSize="24sp" />
<Button
android:id="@+id/btn5"
android:layout_width="68dp"
android:layout_height="51dp"
android:text="5"
android:textSize="24sp" />
<Button
android:id="@+id/btn6"
android:layout_width="68dp"
android:layout_height="51dp"
android:text="6"
android:textSize="24sp" />
<Button
android:id="@+id/minusbtn"
android:layout_width="68dp"
android:layout_height="51dp"
android:layout_marginStart="27dp"
android:text="-"
android:textSize="24sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center_horizontal"
android:orientation="horizontal">
<Button
android:id="@+id/btn1"
android:layout_width="68dp"
android:layout_height="51dp"
android:text="1"
android:textSize="24sp" />
<Button
android:id="@+id/btn2"
android:layout_width="68dp"
android:layout_height="51dp"
android:text="2"
android:textSize="24sp" />
<Button
android:id="@+id/btn3"
android:layout_width="68dp"
android:layout_height="51dp"
android:text="3"
android:textSize="24sp" />
<Button
android:id="@+id/sumbtn"
android:layout_width="68dp"
android:layout_height="51dp"
android:layout_marginStart="27dp"
android:text="+"
android:textSize="24sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center_horizontal"
android:orientation="horizontal">
<Button
android:id="@+id/dotbtn"
android:layout_width="68dp"
android:layout_height="51dp"
android:text="."
android:textSize="24sp" />
<Button
android:id="@+id/zerobtn"
android:layout_width="68dp"
android:layout_height="51dp"
android:text="0"
android:textSize="24sp" />
<Button
android:id="@+id/equalbtn"
android:layout_width="68dp"
android:layout_height="51dp"
android:text="="
android:textSize="24sp" />
<Button
android:id="@+id/divbtn"
android:layout_width="68dp"
android:layout_height="51dp"
android:layout_marginStart="27dp"
android:text="/"
android:textSize="24sp" />
</LinearLayout>
</LinearLayout>
Logcat :(错误)
链接到Logcat:https://pastebin.com/hbwZVUZg
答案 0 :(得分:1)
删除abstract关键字。然后textarea= (EditText) findViewById(R.id.textarea);
的行EditText textarea;
发生变化,最后将其放在onCreate()textarea = (EditText)findViewById(R.id.textarea);
请记住,您无法实例化抽象类。 here
并检查如何调试here
public class CalculatorActivity extends AppCompatActivity implements View.OnClickListener {
Button btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, zerobtn, dotbtn, equalbtn, minusbtn, sumbtn, divbtn, mulbtn;
double num1, num2;
boolean sum, minus, div, mul;
EditText textarea;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
textarea = (EditText) findViewById(R.id.textarea);
答案 1 :(得分:0)
将此代码放入onCreate
:
@Override
protected void onCreate(Bundle savedInstanceState)
{
...
textarea = (EditText)findViewById(R.id.textarea);
...
}
答案 2 :(得分:0)
检查您是否使用相同版本的依赖项。依赖项之间不应存在任何版本冲突。