Java 安卓应用赢得';当我运行它时,无法停止崩溃,ParseInt有问题
我正在制作一个简单的应用程序来计算运动时燃烧的卡路里。但是,当我试图将edittext转换为int值时,它崩溃了。我也是java和Android Studio的初学者,所以请不要犹豫使用详细的解释。提前谢谢Java 安卓应用赢得';当我运行它时,无法停止崩溃,ParseInt有问题,java,android,Java,Android,我正在制作一个简单的应用程序来计算运动时燃烧的卡路里。但是,当我试图将edittext转换为int值时,它崩溃了。我也是java和Android Studio的初学者,所以请不要犹豫使用详细的解释。提前谢谢 import android.support.v7.widget.AppCompatTextView; import android.content.Context; import android.net.Uri; import android.os.Bundle; import andro
import android.support.v7.widget.AppCompatTextView;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
public class FirstFragment extends Fragment implements AdapterView.OnItemSelectedListener{
// Store instance variables
private String title;
private int page;
EditText countCal;
EditText weight;
int cal;
Spinner spinner;
// newInstance constructor for creating fragment with arguments
public static FirstFragment newInstance(int page, String title) {
FirstFragment fragmentFirst = new FirstFragment();
Bundle args = new Bundle();
args.putInt("someInt", page);
args.putString("someTitle", title);
fragmentFirst.setArguments(args);
return fragmentFirst;
}
// Store instance variables based on arguments passed
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
page = getArguments().getInt("someInt", 0);
title = getArguments().getString("someTitle");
}
// Inflate the view for the fragment based on layout XML
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_first, container, false);
countCal =(EditText)view.findViewById(R.id.editText);
weight = (EditText)view.findViewById(R.id.weight);
Spinner spinner = (Spinner)view.findViewById(R.id.spinner);
ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(getActivity(), R.array.Exercises, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);
return view;
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int i, long l) {
if (countCal.getText().toString().trim().length() == 0) {
if (weight.getText().toString().trim().length() == 0) {
}
} else {
if (parent.getItemAtPosition(i).toString() == "Jogging") {
Toast.makeText(parent.getContext(), (int) (0.0175 * 7 * Integer.parseInt(weight.getText().toString()) * Integer.parseInt(weight.getText().toString())), Toast.LENGTH_SHORT).show();
} else if (parent.getItemAtPosition(i).toString() == "Walking") {
Toast.makeText(parent.getContext(), (int) (0.0175 * 3.5 * Integer.parseInt(weight.getText().toString()) * Integer.parseInt(weight.getText().toString())), Toast.LENGTH_SHORT).show();
} else if (parent.getItemAtPosition(i).toString() == "Free Weights") {
Toast.makeText(parent.getContext(), (int) (0.0175 * 4.5 * Integer.parseInt(weight.getText().toString()) * Integer.parseInt(weight.getText().toString())), Toast.LENGTH_SHORT).show();
}
Toast.makeText(parent.getContext(), "Enter the Values!", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
}
}
这是我的XML布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="stefdude1999.fitness.FirstFragment"
android:id="@+id/content">
<!-- TODO: Update blank fragment layout -->
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|top"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<EditText
android:layout_width="113dp"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/editText"
android:layout_gravity="left|top"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Enter Minutes"
android:id="@+id/textView"
android:layout_gravity="left|top"
android:layout_below="@+id/editText"
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/editText2"
android:layout_below="@+id/textView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignRight="@+id/editText"
android:layout_alignEnd="@+id/editText" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Enter Weight (Kg)"
android:id="@+id/weight"
android:layout_below="@+id/editText2"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
我不确定它是哪一个,因为您还没有显示XML布局,但是
countCal
或weight
不是editText
。它们中的一个或两个实际上是AppCompatTextView
。这基本上是一个TextView
,支持旧版本的android
首先导入android.widget.TextView
,然后尝试一次更改一组。因此,请尝试:
weight = (TextView) view.findViewById(R.id.weight);
如果不起作用,请将其切换回原始版本,然后尝试:
countCal = (TextView) view.findViewById(R.id.editText);
如果这不起作用,请尝试将它们都强制转换为TextView
如果仍然不起作用,请尝试相同的方法,但导入android.support.v7.widget.AppCompatTextView
,并将它们转换为AppCompatTextView
。希望这有帮助
编辑:
明白了!在XML布局中,它表示小部件R.id.weight
是一个文本视图
如果您只对TextView
施加权重,并将另一个作为EditText
保留,那么它应该会起作用
weight = (TextView) view.findViewById(R.id.weight);
我不确定是哪个,因为您还没有显示XML布局,但是
countCal
或weight
不是editText
。它们中的一个或两个实际上是AppCompatTextView
。这基本上是一个TextView
,支持旧版本的android
首先导入android.widget.TextView
,然后尝试一次更改一组。因此,请尝试:
weight = (TextView) view.findViewById(R.id.weight);
如果不起作用,请将其切换回原始版本,然后尝试:
countCal = (TextView) view.findViewById(R.id.editText);
如果这不起作用,请尝试将它们都强制转换为TextView
如果仍然不起作用,请尝试相同的方法,但导入android.support.v7.widget.AppCompatTextView
,并将它们转换为AppCompatTextView
。希望这有帮助
编辑:
明白了!在XML布局中,它表示小部件R.id.weight
是一个文本视图
如果您只对TextView
施加权重,并将另一个作为EditText
保留,那么它应该会起作用
weight = (TextView) view.findViewById(R.id.weight);
我添加了我的XML布局,希望能有所帮助。我尝试了这两种方法,两次错误消息都告诉我它是不兼容的类型,因为它需要EditText,并且它提供了TextView,所以我猜它们都是EditText。你能再显示一点活动吗?某个地方有一个不正确的强制转换,但不是在您显示的片段中…我添加了完整的活动,以防您想看到它。我添加了我的XML布局,希望能有所帮助。我尝试了两种方法,两次错误消息都告诉我它是不兼容的类型,因为它需要EditText,并且给定了TextView,所以我猜他们都是编辑文本。你能多展示一些活动吗?有一个不合适的演员阵容,但不是在你展示的片段中…我添加了完整的活动,以防你想看。我觉得这里有点太多的代码-足以让回答这个问题变得更加困难。你能创建一个吗?我觉得这里的代码有点太多了-足以让回答这个问题变得更加困难。你能创造一个新的世界吗?