2011-12-05 16 views
1

我是一个非常新的Java。我以为我做得很好,但现在已经撞上了一堵砖墙,可以这么说。在另一个类和res/menu/.xml文件中使用基本数据类型

这个想法是我使用'home button''_menu'为用户选择26种格式之一。他们选择的格式有3个变量。这3个变量然后在第一个xml视图中使用,以及2个用户输入来计算另一个变量。然后在第二个xml视图中使用此变量以及第三个用户输入来计算最终答案。

我已经创建了26个选项,如果例如我选择选项5,在仿真器屏幕上,我可以看到与此选项相关的所有正确值。我不认为这些值存储在任何地方。我这样说是因为如果我从那个观点出来并回到它的话,它并没有像我的例子那样显示选择5.它显示了它的初始状态,好像我第一次进入它。我认为这与从一开始就开展这项活动有关,但无论如何都是围绕这一点。或者我真的从哪里开始。

我的第二个问题是我用这个选择创建的整型变量。我需要将它们传递给另一个Java文件以进行第一组计算。我试图通过'new intent putExtra'传递变量/数据,但无法使其正常工作。但我不认为我可以使用这个,因为我不想直接从res/menu/.xml视图启动第二个视图。

不确定这对任何人都有意义。有人能帮助我指出正确的方向吗?

回答

0

我不太明白你的第一个问题,但它听起来像你正在启动一项新的活动,当你退出并回来时,一切都被重置。如果您在从手机的菜单按钮中选择选项后启动新的活动,则应实施一种将数据保存到主要活动的共享首选项的方法。应该在onPause(),onDestroyed()或onStop()方法上调用此方法。您还可以在onResume()上添加一个方法,其中活动检查是否存在共享首选项中存储的任何数据,如果是,则进行所需的更改。

activity life cycle

关于你的第二个问题......我有点不明白要么它。当你开始一个新的活动并且想要传递数据时使用新的intent和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 []是textviews的数组。

然后在我的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只是我自己的方法

创建一个自定义视图
相关问题