1

共有設定に保存されている一連の変数 (float/integer/string) があります。初めて実行すると、3 つのデータすべてが完全に表示されます。2 回目に実行すると、debtNames1 が保持されますが (以下を参照)、amount1 は 0.0 になります。私はスクリプトを調べて、長い/文字列を試してみましたが、同じことをします。以下は活動です:

public class DebtList extends Activity {

    String debtNames1, debtNames2, debtNames3, debtNames4, debtNames5, debtNames6 = null; 
    float amount1, amount2, amount3, amount4, amount5, amount6;
    long debtRate1, debtRate2, debtRate3, debtRate4, debtRate5, debtRate6;
    int debtTerm1, debtTerm2, debtTerm3, debtTerm4, debtTerm5, debtTerm6;

    @SuppressLint("ShowToast")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.debtlist);
        SharedPreferences sharedPref= getSharedPreferences("chaosdata", 0);
        debtNames1 = sharedPref.getString("debtNames1", debtNames1);
        debtNames2 = sharedPref.getString("debtNames2", debtNames2);
        debtNames3 = sharedPref.getString("debtNames3", debtNames3);
        debtNames4 = sharedPref.getString("debtNames4", debtNames4);
        debtNames5 = sharedPref.getString("debtNames5", debtNames5);

        amount1 = sharedPref.getFloat("debtAmount1", amount1);
        amount2 = sharedPref.getFloat("debtAmount2", amount2);
        amount3 = sharedPref.getFloat("debtAmount3", amount3);
        amount4 = sharedPref.getFloat("debtAmount4", amount4);
        amount5 = sharedPref.getFloat("debtAmount5", amount5);

        debtRate1 = sharedPref.getLong("debtRate1", debtRate1);
        debtRate2 = sharedPref.getLong("debtRate2", debtRate2);
        debtRate3 = sharedPref.getLong("debtRate3", debtRate3);
        debtRate4 = sharedPref.getLong("debtRate4", debtRate4);
        debtRate5 = sharedPref.getLong("debtRate5", debtRate5);

        debtTerm1 = sharedPref.getInt("debtTerm1", debtTerm1);
        debtTerm2 = sharedPref.getInt("debtTerm2", debtTerm2);
        debtTerm3 = sharedPref.getInt("debtTerm3", debtTerm3);
        debtTerm4 = sharedPref.getInt("debtTerm4", debtTerm4);
        debtTerm5 = sharedPref.getInt("debtTerm5", debtTerm5);

        //Name Displays
        TextView debtName1 = (TextView) findViewById(R.id.dispName1);
        TextView debtName2 = (TextView) findViewById(R.id.dispName2);
        TextView debtName3 = (TextView) findViewById(R.id.dispName3);
        TextView debtName4 = (TextView) findViewById(R.id.dispName4);
        TextView debtName5 = (TextView) findViewById(R.id.dispName5);

        //Amount Displays
        TextView debtAmt1 = (TextView) findViewById(R.id.dispBal1);
        TextView debtAmt2 = (TextView) findViewById(R.id.dispBal2);
        TextView debtAmt3 = (TextView) findViewById(R.id.dispBal3);
        TextView debtAmt4 = (TextView) findViewById(R.id.dispBal4);
        TextView debtAmt5 = (TextView) findViewById(R.id.dispBal5);

        //Order Displays
        TextView dispDebtOrder1 = (TextView) findViewById(R.id.dispPayOrder1);
        TextView dispDebtOrder2 = (TextView) findViewById(R.id.dispPayOrder2);
        TextView dispDebtOrder3 = (TextView) findViewById(R.id.dispPayOrder3);
        TextView dispDebtOrder4 = (TextView) findViewById(R.id.dispPayOrder4);
        TextView dispDebtOrder5 = (TextView) findViewById(R.id.dispPayOrder5);

        TextView terminate = (TextView) findViewById(R.id.terminate);

        Integer trigger = 0;
        Integer stopper = 1;
        Bundle extras = getIntent().getExtras();

        if (debtNames1 == null && extras != null && trigger == 0) {
            debtNames1 = extras.getString("nickname");
            debtName1.setText("" + debtNames1);
            amount1 = extras.getFloat("outstandingBalance");
            debtAmt1.setText("" + (float) amount1);
            dispDebtOrder1.setText("1");
            trigger++;
        }
        else if (debtNames1 != null) {
            debtName1.setText("" + debtNames1);
            debtAmt1.setText("" + (float) amount1);
            dispDebtOrder1.setText("1");
            stopper++;
        }

        if (debtNames2 == null && extras != null && trigger == 0) {
            debtNames2 = extras.getString("nickname");
            debtName2.setText(debtNames2);
            amount2 = extras.getFloat("outstandingBalance");
            debtAmt2.setText("" + amount2);
            dispDebtOrder2.setText("2");
            trigger++;
        }
        else if (debtNames2 != null) {
            debtName2.setText("" + debtNames2);
            debtAmt2.setText("" + amount2);
            dispDebtOrder2.setText("2");
            stopper++;
        }

        if (debtNames3 == null && extras != null && trigger == 0) {
            debtNames3 = extras.getString("nickname");
            debtName3.setText(debtNames3);
            amount3 = extras.getFloat("outstandingBalance");
            debtAmt3.setText("" + amount3);
            dispDebtOrder3.setText("3");
            trigger++;
        }
        else if (debtNames3 != null) {
            debtName3.setText("" + debtNames3);
            debtAmt3.setText("" + amount3); 
            dispDebtOrder3.setText("3");
            stopper++;
        }

        if (debtNames4 == null && extras != null && trigger == 0) {
            debtNames4 = extras.getString("nickname");
            debtName4.setText(debtNames4);
            amount4 = extras.getFloat("outstandingBalance");
            debtAmt4.setText("" + amount4);
            dispDebtOrder4.setText("4");
            trigger++;
        }
        else if (debtNames4 != null) {
            debtName4.setText("" + debtNames4);
            debtAmt4.setText("" + amount4);
            dispDebtOrder4.setText("4");
            stopper++;
        }

        if (debtNames5 == null && extras != null && trigger == 0) {
            debtNames5 = extras.getString("nickname");
            debtName5.setText(debtNames5);
            amount5 = extras.getFloat("outstandingBalance");
            debtAmt5.setText("" + amount5);
            dispDebtOrder5.setText("5");
            trigger++;
        }
        else if (debtNames5 != null) {
            debtName5.setText("" + debtNames5);
            debtAmt5.setText("" + amount5); 
            dispDebtOrder5.setText("5");
            stopper++;
        }

        if (stopper == 6) {
            terminate.setText("Maximum Debts Reached!");
            }
        else {
            terminate.setText("");
        }

        SharedPreferences.Editor editor= sharedPref.edit();

        editor.putString("debtNames1", debtNames1);
        editor.putFloat("debtAmount2", amount1);
        editor.putLong("debtRate1", debtRate1);
        editor.putInt("debtTerm1", debtTerm1);

        editor.putString("debtNames2", debtNames2);
        editor.putFloat("debtAmount2", amount2);
        editor.putLong("debtRate2", debtRate2);
        editor.putInt("debtTerm2", debtTerm2);

        editor.putString("debtNames3", debtNames3);
        editor.putFloat("debtAmount2", amount3);
        editor.putLong("debtRate3", debtRate3);
        editor.putInt("debtTerm3", debtTerm3);

        editor.putString("debtNames4", debtNames4);
        editor.putFloat("debtAmount2", amount4);
        editor.putLong("debtRate4", debtRate4);
        editor.putInt("debtTerm4", debtTerm4);

        editor.putString("debtNames5", debtNames5);
        editor.putFloat("debtAmount2", amount5);
        editor.putLong("debtRate5", debtRate5);
        editor.putInt("debtTerm5", debtTerm5);

        editor.commit();
    }

前述したように、データを「取得」すると、最初の if で完全に表示されます。2 回目にデータを「取得」すると、2 回目の if では完全に表示されますが、1 回目の if では amount1 ではなく、debtNames1 のみが正しく表示されます。

何か案は?

ありがとう!

4

1 に答える 1

1

ステートメント「editor.putFloat("debtAmount2", amount1);」のキー値を確認してください。

すべての場合で、'debtAmount2' を使用しています。

于 2013-10-24T04:13:15.753 に答える