我是Java的新手。我以为我做得还不错但现在已经打了一堵砖墙,可以这么说。
我的想法是使用“主页按钮”'_menu'供用户选择26种格式中的一种。他们选择的格式有3个变量。然后在第一个xml视图中使用这3个变量,以及2个用户输入来计算另一个变量。然后在第二个xml视图中使用此变量以及此处的第三个用户输入,以计算最终答案。
我创建了26个选项,例如我选择选项5,在模拟器屏幕上,我看到与此选项关联的所有正确值。我不认为这些值会被存储在任何地方。我这样说是因为如果我从那个视图中退出并返回到它中,它就不会显示,就像在我的例子中那样,选择5.它显示了它的初始状态,就像我第一次进入它一样。我认为这与从一开始就启动此活动有关,但无论如何都在这周围。或者我真正从哪里开始。
我的第二个问题是我从这个选择中创建的整数变量。我需要将它们传递到另一个java文件中进行第一组计算。我试图用'new intent putExtra'传递变量/数据,但无法使其工作。但我不认为我可以使用它,因为我不想直接从res / menu / .xml视图启动第二个视图。
不确定这对任何人都有意义。有人可以帮助我指出正确的方向吗?
答案 0 :(得分:0)
我不太明白你的第一个问题,但听起来你正在推出一项新活动,当你退出并回到它时,一切都被重置了。如果您在从手机的菜单按钮中选择选项后启动新活动,则应实施一种方法,将数据保存到主要活动的共享首选项中。应该在onPause(),onDestroyed()或onStop()方法上调用此方法。您还可以在onResume()上添加一个方法,其中活动检查共享首选项中是否存储了任何数据,如果存在,则进行所需的更改。
至于你的第二个问题......我也不明白。当您开始新活动并希望将数据传递给它时,将使用新意图和putextra。视图不会“启动”它们只会被充气并随时显示。我做了一个应用程序,我在一个活动中拥有所有东西,并且一直只使用setContentView()方法。从长远来看,它只会使一切变得复杂。保持简单和发起活动更容易。以下是传递给新活动的一些变量的示例: 在我的主要活动(FirstActivity)上,我有: (单击newActivityButton时)
case R.id.newActivityButton:
Intent mIntent = new Intent(FirstActivity.this,SecondActivity.class);
String[] luckyNumbers = {
luckyNumber[0].getText().toString(),
luckyNumber[1].getText().toString(),
luckyNumber[2].getText().toString(),
luckyNumber[3].getText().toString(),
luckyNumber[4].getText().toString(),
luckyNumber[5].getText().toString()};
mIntent.putExtra("luckyNumbers", luckyNumbers);
mIntent.putExtra("message", messageField.getText().toString());
FirstActivity.this.startActivity(mIntent);
break;
luckyNumbers []是一个textview数组。
然后在我的NewActivity onCreate()上,我有:
message = getIntent().getExtras().getString("message");
Log.i("TAG", message);
luckyNumbers = getIntent().getExtras().getStringArray("luckyNumbers");
cv.setLuckyNumbers(this.luckyNumbers);
cv.setMessage(this.message);
其中cv只是我用自己的方法创建的自定义视图