- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
为什么我总是在 if else 语句中收到此消息:方法调用 'bundle.getString("Ans_phy").equals(R.string.active)' 可能会产生 'java.lang.NullPointerException'
我的提交按钮也不起作用,因为它假设在我单击提交按钮后在下一个 Activity 中显示“新体重”和“卡路里”。
评论.java
public void setBtnSubmit()
{
//Create a bundle object to store the bundle added to the intent
final Bundle bundle = getIntent().getExtras();
//Get the values out by key
final String umur = bundle.getString("Ans_age");
final String textBMI = bundle.getString("Ans_bmi");
final String aktiviti = bundle.getString("Ans_phy");
final String textCategory = bundle.getString("Ans_category");
final String txtcf = bundle.getString("cfDisease");
//Get the textview controls
final TextView txtage = (TextView) findViewById(R.id.textView5);
final TextView txtbmi = (TextView) findViewById(R.id.textView7);
final TextView txtphy = (TextView) findViewById(R.id.textView6);
final TextView txtcategory = (TextView) findViewById(R.id.result);
//final TextView cf_result = (TextView) findViewById(R.id.result);
//Button buttonSend = (Button) findViewById(R.id.btnsend);
//Set the text values of the text controls
txtage.setText(umur);
txtbmi.setText(textBMI);
txtphy.setText(aktiviti);
txtcategory.setText(textCategory);
//cf_result.setText(txtcf);
Button btnsubmit = (Button) findViewById(R.id.btnsubmit);
//Intent intentsubmit = new Intent();
//intentsubmit.setClass(Review.this, Result.class);
btnsubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//startActivity(intentsubmit);
Integer calories;
double weight1, weight2, weight3;
double newWeight;
// AGE 41 - 45
if (bundle.getString("Ans_age").equals(R.string.age1)) // 41 - 45
{
weight1 = 0.7;
if (bundle.getString("Ans_phy").equals(R.string.moderate)) //Sedentary Active
{
weight2 = 0.8;
if ((txtcategory.equals("Underweight"))) //Underweight
{
weight3 = 0.6;
newWeight = 0.8 * weight2;
calories = 1600;
String cf = Double.toString(newWeight);
String cal = Integer.toString(calories);
Intent intent = new Intent(Review.this, Result.class);
Bundle bundle = new Bundle();
bundle.putString("Ans_calories", cal);
bundle.putString("cfCalories", cf);
intent.putExtras(bundle);
startActivity(intent);
}
}
}
else
if (bundle.getString("Ans_age").equals(R.string.age2)) // 46 - 50
{
weight1 = 0.7;
if (bundle.getString("Ans_phy").equals(R.string.active)) // Moderately Active
{
weight2 = 0.7;
if ((txtcategory.equals("Normal"))) // Underweight
{
weight3 = 0.8;
newWeight = 0.9 * weight1;
calories = 1800;
String cf = Double.toString(newWeight);
String cal = Integer.toString(calories);
Intent intent = new Intent(Review.this, Result.class);
Bundle bundle = new Bundle();
bundle.putString("Ans_calories", cal);
bundle.putString("cfCalories", cf);
intent.putExtras(bundle);
startActivity(intent);
}
}
}
else
if (bundle.getString("Ans_age").equals(R.string.age2)) // 41 - 45
{
weight1 = 0.8;
if (bundle.getString("Ans_phy").equals(R.string.moderate)) // Active
{
weight2 = 0.8;
if ((txtcategory.equals("Obese"))) // Underweight
{
weight3 = 0.8;
newWeight = 0.9 * weight3;
calories = 2000;
String cf = Double.toString(newWeight);
String cal = Integer.toString(calories);
Intent intent = new Intent(Review.this, Result.class);
Bundle bundle = new Bundle();
bundle.putString("Ans_calories", cal);
bundle.putString("cfCalories", cf);
intent.putExtras(bundle);
startActivity(intent);
}
}
}
}
});
}
结果.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.result);
Intent intent = getIntent();
final String cal = intent.getStringExtra("Ans_calories");
final String cf = intent.getStringExtra("cfCalories");
final TextView kalori = (TextView) findViewById(R.id.show_calories);
final TextView keputusan = (TextView) findViewById(R.id.show_result);
kalori.setText(cal);
keputusan.setText(cf);
}
最佳答案
您可以执行以下操作以从 Intent 获取数据:
Bundle extras = getIntent().getExtras();
if (extras != null) {
String yourStirng = extras.getString("yourKeyString");
}
当尝试将数据用于 Intent 时,您也可以这样做:
Intent intent = new Intent(getActivity() / this ,YourActivity.class);
intent.putExtra("YOURKEyString", "Your value string");
startActivity(intent);
试试这个,希望对你有帮助
关于java - 我该如何解决这个 "Method invocation ' bundle.getString ("Ans_age").equals(R.string.age2 )' may produce ' java.lang.NullPointerException'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34894555/
我注意到 Activity 类有两种不同的方法来获取字符串资源。这可以通过使用: getString(int resId):从应用程序包的默认字符串表中返回一个本地化字符串。 getResources
有什么值得注意的区别吗?我说的是一个花费大量时间读取查询结果的程序,并且某些运行(这些是网络点击)花费了 2 分钟以上的时间。如果我可以通过使用整数而不是字段名称来节省几秒钟,我想我可以免费获得一些时
要获取设备 ID,我通常使用以下代码段: String android_id = Settings.System.getString(getContentResolver(), Secure.ANDR
我在文件夹中有一些带有字符串的本地化文件,例如 values values-ru values-es etc. 在每个文件夹中都有一个 strings.xml 文件,其键相同但值不同。 在 Debug
我在 Assets 文件夹中使用不同的文本文件(arabic.txt,english.txt)我想更改设备语言的文件库 值/字符串文件中可以设置文件名吗? public static class Ti
我有一个扩展应用程序的类。我需要从 strings.xml 文件中获取一个字符串。 我正在使用此类来管理全局状态,因此它是通过 list 加载的。 加载时,getString() 生成一个空指针引用。
所以我在strings.xml中有很多字符串,它们的记录格式是: xxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxx ...... 现在我想一个一个地加载它们,而不必输入所有的字符
我有一个类,我应该在其中将一些字符串(取自 strings.xml)插入到 StringBuffer 中。这将传递给一个 Activity 。问题是我应该使用 getString() 方法,但我不能,
有没有办法以编程方式更改 R.string?因为它会抛出错误。 基本上我想这样做:String parkAdd = getString(R.string.stg_ParkAddress_+id); 因
我遇到了一个只出现在这个语法中的崩溃,在这个语句之后它崩溃了 ats+=getString(R.string.gal_grietineles , grietinele)+"\n";当我使用 ats+=
这是我的 onActivityResult 方法的代码: @Override public void onActivityResult(int requestCode, int resultCode,
我是android新手,我正在编写一个应用程序来根据纬度和经度获取地址。在 FetchAddressIntentService 类中,我在 getString() 函数中收到一个错误,指出将字符串添加
我遇到的问题是 getString() 返回的不是 id 的字符串,而是另一个字符串。但首先这是我的代码: public public class ShopFragment extends Fragm
在我的应用程序的应用程序类的 onCreate 中,我有这段代码 Locale current = getResources().getConfiguration().locale;
我想知道 getString()。我可以看到执行 getString(R.string.some_text) 是有效的。 getResources().getString(R.string.conne
基于 Android 文档: https://developer.android.com/training/basics/supporting-devices/languages https://de
我使用的是 Delphi 2009。 这对我来说适用于所有情况,除了一种情况: var BOMLength: integer; Buffer: TBytes; Encoding: TEnc
Dictionary Fields = new Dictionary();for (int i = 0; i < reader.FieldCount; i++){ Fields.Add(rea
我有一个名为 spiliaBeach 的 Place Object 实例,它接受您在下面看到的参数: public PlaceObject spiliaBeach = new PlaceObject(
我有: Toast.makeText(NewChatActivity.this, getString(R.string.invitation_sent_prompt, contact), Toast.
我是一名优秀的程序员,十分优秀!