2

我有七个不同的活动,我调用最终活动中的所有数据来计算它,在所有活动中,我放置了一个带有故障保护的按钮,如果编辑文本为空,则下一个按钮是不可点击的。

如果用户直接单击结果页面我的应用程序崩溃,现在出现问题,因为 sharedpreferences 中没有数据可以计算,

我想有一些方法或代码来检查我的共享首选项或整个文件是否为空用户应该得到一个 toast 消息“首先填充值”并且计算页面没有打开。这样我的应用程序将保持活力。

我在想正确的方向吗?


一些示例代码:

请注意 seeresults 是一个按钮,单击该按钮可打开具有计算结果的页面(访问共享首选项值)。

变量“v”是双精度

我输入了以下代码,但它再次出现问题(如果语句不能与 double 进行比较),任何人都可以帮助我

seeresults.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                abcPref = this.getSharedPreferences(FILE1, 0);
                Boolean bCheck = abcPref.getBoolean("v", false);

                if (v == -1) { Toast message = Toast.makeText(Timesaving.this, "No Data or Parameteres Was Entered in forms", 3000);
                message.setGravity(Gravity.CENTER_VERTICAL , 0, 0);
                message.show();
                finish();} 
                else{
                Intent openresult = new Intent("com.ideals.ideal.RESMAIN");
                startActivity(openresult);
                }
            }
        });
4

2 回答 2

0

双精度数永远不会为空。Java 自动将其初始化为 0。您可以做的是为您使用双精度的首选项设置默认值并对其进行Double.NaN检查。

或者您可以简单地定义适用于您的计算并且用户可以随意更改的合理默认值。

于 2013-09-17T14:32:16.923 回答
0
SharedPreferences sPrefs = getSharedPreferences("MyPrefs", 0);
Boolean bCheck = sPrefs.getBoolean("ButtonReceiverState", false);

当您尝试从 sharedPreferences 检索值时,该调用为可能的空指针提供了故障安全;如果没有找到键的值,您可以设置默认值。

false就我而言,如果没有要检索的值,则布尔值设置为。这也适用于所有不同的数据类型。

于 2013-09-17T14:37:37.750 回答