我已经找了很长时间没有机会,我现在可以得到这个问题的许可。
我正在尝试在Android中开发测验,而在更新分数时遇到问题。目前,我有两节课; MainActivity和Question002(在MainActivity中还有第一个问题)。
在我的MainActivity中,我有一个名为currentPoint的int。我创建了四个按钮,通过单击右键,有一个增量(currentPoint ++)。然后在课题Question2中,我有以下代码:
MainActivity a = new MainActivity();
回答正确后我说:
a.currentPoint++;
但是,如果正确回答了第一个问题,则返回其第一个值,即初始化(通过标准0)而不是1。当第一个问题被正确回答并显示下一个活动(因此下一个类)时,如何将值1传递给我的Question002类?
答案 0 :(得分:4)
首先创建一个应用程序类
class MyApplication extends Application{
public int currentScore;
private SharedPreferences sp;
@Override
public void onCreate()
{
super.onCreate();
sp = getSharedPreferences(getResources().getString(R.string.app_name),
MODE_PRIVATE);
currentScore = sp.getInt("score",0);
}
public void updateScore(int increment)
{
currentScore = currentScore+increment;
sp.edit().putInt("score", currentScore).commit();
}
}
现在在MainActivity上添加以下代码 -
class MainActivity extends Activity{
public MyApplication application;
@Override
protected void onCreate(Bundle arg0)
{
application = (MyApplication) getApplication();
// to get current score
int currentScore = application.currentScore;
// to update currentScore
application.updateScore(1);
}
}
相同 现在在Question002上添加以下代码 -
class Question002 extends Activity{
public MyApplication application;
@Override
protected void onCreate(Bundle arg0)
{
application = (MyApplication) getApplication();
// to get current score
int currentScore = application.currentScore;
// to update currentScore
application.updateScore(1);
}
}
现在最后将add android:name属性添加到应用程序标记 -
<application android:name="yourpackagename.MyApplication" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" >
您的分数存储在MyApplication类中。在onCreate()调用之后,所有Activity都可以通过getApplication()方法访问它。 无需通过意图通过分数。 分数也保存在sharedprefernce中并从中加载。
答案 1 :(得分:0)
您可以使用sharedpreference
来维持分数,但是如果您想使用主要活动,则将当前点声明为public static variable
,然后将其增加为
MainActivity.currentPoint++;
答案 2 :(得分:0)
if(your answer correct)
{
currentPoint = currentPoint+1;
Intent myIntent = new Intent(MainActivity.this, Question002.class);
myIntent.putExtra("result", currentPoint );
startActivity(myIntent);
}
在班级Question002
Intent mIntent = getIntent();
int intValue = mIntent.getIntExtra("result", 0);