启动导致崩溃的结果的活动



我正在尝试学习Android Studio,我的第一个应用程序是血液酒精计算器。用户启动该应用,然后启动一个新活动,以便他们可以输入体重并按 ok,这会将他们返回到主活动并填写权重文本。

我在第二个活动中使用startActivityForResult然后putExtra。如果我使用getExtra方法,第一个活动崩溃,如果我删除 2 行接收代码,则不会崩溃。当我使用调试器时,它会在说应用程序已停止工作之前说NullPointerException

主活动代码

public class MainActivity extends Activity {
static int displayunit = 0;
static double percentage = 5.0;
static int change = 1;
static double bah;
static double vol = 25;
static double timestamp = 0;
static double w = 0;
static String we = "a";
final int rcode = 3;
final String[] units = {"Small Shot(25ml)", "Large Shot(35ml)", "Small 
Port/Sherry(50ml)", "Large Port/Sherry(70ml)", "Small Wine(125ml)", 
"Large 
Wine(175ml)", "Small Beer Bottle(284ml)", "Half Pint(236.6ml)", "Medium 
Beer Bottle(330ml)", "Can of beer(440ml)", "Large Bottle(500ml)", 
"Pint(568.26ml)", "Massive Beer Bottle(660ml)"};
final int[] unitsum = {25, 35, 50, 70, 125, 175, 284, 237, 330, 440, 500, 
569, 660};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent();


intent.setClassName("com.example.alccalc","com.example.alccalc.enterweight");
if(w ==0){
startActivityForResult(intent, rcode);
}
}
@Override
protected void onActivityResult ( int requstCode, int resultCode, 
Intent intent){
if (requstCode == rcode && resultCode == RESULT_OK) {
we = getIntent().getStringExtra("weighttext");
w = Double.parseDouble(we);
}
TextView kg = (TextView) findViewById(R.id.kg);
kg.setText(we)
Second Activity
public class enterweight extends Activity {
EditText entweight;
TextView tester;
String weightstring;
@Override
protected void onCreate(Bundle State) {
super.onCreate(State);
setContentView(R.layout.activity_enterweight);
entweight = (EditText) findViewById(R.id.entweight);
tester = (TextView)findViewById(R.id.tester);

Button okweight = (Button) findViewById(R.id.okweight);
okweight.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
weightstring = entweight.getText().toString();
//tester.setText(weightstring);
Intent intent = new Intent();
intent.putExtra
("weighttext", weightstring);
setResult(RESULT_OK, intent);
if (intent.hasExtra("weighttext")) {
finish();
}

}
});
}
}

错误在这里getIntent();

由于您使用的是onActivityResult ( int requstCode, int resultCode, Intent intent)方法,因此您可以在变量中找到您的额外内容intent. 该方法getIntent()返回用于启动活动的目的。在您的情况下,它是null.

用:

we = intent.getStringExtra("weighttext");

而不是

we = getIntent().getStringExtra("weighttext");

更好:

Bundle extras = intent.getExtras();
if (extras != null) {
String result = extras.getString("weighttext");
.....
}

在接收代码中尝试此操作

Intent intent= getIntent();
Bundle b =  intent.getExtras();
if(b != null)
we = b.getString("weighttext");

您正在调用getIntent()以获取结果数据。getIntent()是一种活动方法,它返回用于启动活动的目的。应使用通过onActivityResult方法传递的intent变量。

if (requstCode == rcode && resultCode == RESULT_OK) { we = intent.getStringExtra("weighttext"); w = Double.parseDouble(we); }

相关内容

  • 没有找到相关文章

最新更新