Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 测验申请?_Android - Fatal编程技术网

Android 测验申请?

Android 测验申请?,android,Android,我正在为我的项目构建一个测验应用程序。对于不同的问题,我有不同的活动。我用单选按钮回答。请问如何设置将分数添加到初始分数的计数器?我应该在哪里定义计数器?我如何在每次点击不同的布局时得到响应? 这是我的 package com.example.android.test; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import

我正在为我的项目构建一个测验应用程序。对于不同的问题,我有不同的活动。我用单选按钮回答。请问如何设置将分数添加到初始分数的计数器?我应该在哪里定义计数器?我如何在每次点击不同的布局时得到响应? 这是我的

package com.example.android.test;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;

    enter code here

public class page1 extends AppCompatActivity {

    @Override
int score = 0;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_page1);

    }
    public void pageTwo(View view) {

        Intent i = new Intent(this,page2.class);
        startActivity(i);

    }
    public void ans(View view)
    {

        Toast.makeText(this,score,Toast.LENGTH_SHORT).show();
    } 
}

解决方案1:

使用SharedReferences存储一个整数作为分数:

SharedPreferences sp = getSharedPreferences("data", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putInt("score", score);
editor.apply();
要在其他活动中获得分数,请执行以下操作:

SharedPreferences sp = getSharedPreferences("data", Activity.MODE_PRIVATE);
int score = sp.getInt("score", 0); //0 for default if score do not exist.
int score = getIntExtra("extra", 0); //0 for default if score do not exist.
但是,即使用户退出应用程序,该变量仍将存在

解决方案2:

在活动之间传递数据:

Intent i = new Intent(ActivityName.this, NewActivityName.class);
i.putExtra("extra", score);
startActivity(i);
在新活动中:

SharedPreferences sp = getSharedPreferences("data", Activity.MODE_PRIVATE);
int score = sp.getInt("score", 0); //0 for default if score do not exist.
int score = getIntExtra("extra", 0); //0 for default if score do not exist.

使用此方法,如果用户退出应用程序,您将不会保存分数。

我建议您做一些其他事情,您不想为每个问题创建一个全新的活动。创建单个活动并使用extra(参见我的答案)获取字符串(疑问句,答案1,2,3,4..)和int(正确的选择),这样您就可以通过添加新问题轻松更新项目。你也可以让问题的顺序是随机的,这样用户就不会记住所有的问题。你能想象每个问题都有一个活动的答案工作室结构会是什么样子吗。哎呀。更进一步……使用firebase。然后把问题拉进去,带上答案,带上可能的答案。老实说应该很容易