Android测验得分点

时间:2014-02-28 11:32:41

标签: android android-activity increment

我已经找了很长时间没有机会,我现在可以得到这个问题的许可。

我正在尝试在Android中开发测验,而在更新分数时遇到问题。目前,我有两节课; MainActivity和Question002(在MainActivity中还有第一个问题)。

在我的MainActivity中,我有一个名为currentPoint的int。我创建了四个按钮,通过单击右键,有一个增量(currentPoint ++)。然后在课题Question2中,我有以下代码:

    MainActivity a = new MainActivity();

回答正确后我说:

    a.currentPoint++;

但是,如果正确回答了第一个问题,则返回其第一个值,即初始化(通过标准0)而不是1。当第一个问题被正确回答并显示下一个活动(因此下一个类)时,如何将值1传递给我的Question002类?

3 个答案:

答案 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);