2017-07-15 43 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,则将其声明为全局变量。

相关问题