2017-07-15 42 views
0

我已經創建了一個名爲狀態的變量,我想在Report.setOnClickListener()方法中更改它的值。我怎樣才能做到這一點? 我已經在final中聲明瞭Status變量,但是當我想改變它的值時,我得到了錯誤。如何在此代碼中訪問我的狀態變量?

public class MainActivity extends AppCompatActivity { 

    private String Student_Name = ""; 
    private int Student_Grade = 0; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     EditText studentName = (EditText) findViewById(R.id.name); 
     EditText studentGrade = (EditText) findViewById(R.id.grade); 
     Button Submit = (Button) findViewById(R.id.submit); 
     Button Report = (Button) findViewById(R.id.report); 

     final ArrayList<String> infos = new ArrayList<String>(); 
     final String report = ""; 
     final boolean Status = true; 
     for(int i = 0;Status != false;i++){ 
      String name = studentName.getText().toString(); 
      String grade = studentGrade.getText().toString(); 
      report = name + grade; 
      Submit.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        infos.add(report); 
       } 
      }); 
      infos.add(report); 
      Report.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Intent intent = new Intent(MainActivity.this,ReportActivity.class); 
        startActivity(intent); 
        Status = false; 
       } 
      }); 
     } 
+1

declare it outsidecreate as'boolean Status;' –

+0

@Pavneet_Singh謝謝 –

回答

0

當您用final關鍵字聲明變量時,這意味着變量的初始值實際上是其最終的值。你可以把它想象成一個常數

至於你的用例,在類之外聲明變量就是治癒。

public class MainActivity extends AppCompatActivity { 

    private String Student_Name = ""; 
    private int Student_Grade = 0; 
    private boolean Status = true; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     EditText studentName = (EditText) findViewById(R.id.name); 
     EditText studentGrade = (EditText) findViewById(R.id.grade); 
     Button Submit = (Button) findViewById(R.id.submit); 
     Button Report = (Button) findViewById(R.id.report); 

     final ArrayList<String> infos = new ArrayList<String>(); 
     final String report = ""; 
     for(int i = 0;Status != false;i++){ 
      String name = studentName.getText().toString(); 
      String grade = studentGrade.getText().toString(); 
      report = name + grade; 
      Submit.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        infos.add(report); 
       } 
      }); 
      infos.add(report); 
      Report.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Intent intent = new Intent(MainActivity.this,ReportActivity.class); 
        startActivity(intent); 
        Status = false; 
       } 
      }); 
     } 
0

您不能更改聲明爲final的變量的值。使您的狀態變量爲非最終狀態,即布爾狀態= true; ,你就可以改變它的價值。 如果它給你錯誤,將其聲明爲final,則將其聲明爲全局變量。

相關問題