2017-10-25 7 views
-1

私は梨を押すともう1つの梨が得られる小さなプログラムがあります。番号は増加します。リセットボタンとポップアウトアラートダイアログが必要なので、彼らは自分の梨をリセットしたいと確信しています。私はsharedpreferencesと整数を継承しようとしているので、すべて0にリセットして保存することができます。私はこれを実行しますが、それはちょうど梨intは "それはintの上にも"未知のクラスです "と言います。私はJavaで新しくなっているので、なぜそれがわからないのですか。ユーザーが「はい」を押すと、上記の変数やその他のものを継承することはできません。助けてください!ありがとうございました。Java(アンドロイド)で動作しないアラートダイアログで整数継承

注:継承は、ここに使用する権利単語であるかどうかわからない...

public class MainActivity extends AppCompatActivity { 

TextView showValue; 
int pears = 0; 

SharedPreferences pref; 
SharedPreferences.Editor editor; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    pref = getApplicationContext().getSharedPreferences("PearCount", MODE_PRIVATE); 

    showValue = (TextView) findViewById(R.id.countText); 

    pears = pref.getInt("pearCount", 0); // This will get the value of your pearCount, It will return Zero if its empty or null. 
    showValue.setText(pears + " pears"); 
} 


public void PearIncrease(View v) { 
    editor = pref.edit(); 
    pears++; 
    showValue.setText(pears); 
    editor.putInt("pearCount", pears); 
    editor.apply(); 
} 

public void resetButton (View v) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("Reset"); 
    builder.setMessage("Are you sure you want to reset your pear count?"); 
    builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
     } 
     editor = pref.edit(); 
     pears = 0; 
     showValue.setText(pears); 
     editor.putInt("pearCount", pears); 
     editor.apply(); 
    }); 
    builder.setNegativeButton("No", null); 
    builder.show(); 

    } 
} 

Error Image

エラーが発生した場所、それが下に赤い線を持っている部分があることを。ただ、他の方法でそれを使ったことがあっても、そのどれも使えるとは言えません。

+0

エラーが発生した場合、コンパイラまたはIDEはエラーがどの行にあるかを示します。その情報を私たちと共有してください。 – ajb

+0

私の投稿をちょうど更新しました – Nick

+0

基本的には、リセットメソッドの警告ボックスに "はい"が表示されても、intとエディタを使用できませんが、pearincreaserメソッドで使用できます。 – Nick

答えて

0

}は間違った場所にあります。これを試してみてください:

public void onClick(DialogInterface dialog, int which) { 
     editor = pref.edit(); 
     pears = 0; 
     showValue.setText(pears); 
     editor.putInt("pearCount", pears); 
     editor.apply(); 
    } 
0

クラスにはフリーフローティングステートメントを使用できません。クラス内のステートメントは、メソッドまたはイニシャライザブロック内になければなりません。したがって、言うことは違法です。

public class MyClass { 
    int grapes = 0; 
    public void foo() { 
    } 
    grapes = 1; // ERROR! This statement can't be outside a method or 
       // initializer block 
    System.out.println(grapes); // ERROR 
} 

あなたはすでにそれを知っていたでしょう。しかし、あなたは、本質的に、あなたの匿名クラスで同じことをやった:

new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
    } 
    // THE NEXT FIVE STATEMENTS ARE ALL IN THE WRONG PLACE 
    editor = pref.edit(); 
    pears = 0; 
    showValue.setText(pears); 
    editor.putInt("pearCount", pears); 
    editor.apply(); 
}); 

IDEは、ステートメントのものと種類があることを期待し、それはあなたがかなり混乱することができます与え、エラーメッセージされていません。 (あなたが行っていることを推測し、より適切なエラーメッセージを表示するためには、コンパイラまたはIDE解析コードを無効にするために多くの作業が必要です)。

これらのステートメントがメソッドの一部である - あなたは単にタイプミスをしました。

関連する問題