2015-12-04 53 views
0

需要將變量「startTs」聲明爲final。當我宣佈它作爲最終android工作室突出顯示它,並說「不能賦值給最終變量」 ,如果刪除最後修改我收到「變量必須是最終的」如何爲最終變量賦值

現在我想使用變量「startTs」和值分配給它,該怎麼做

請讓我知道如何解決這個

代碼:由於您使用匿名我

final long startTs; 

     mbtnLogFileAction.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       switch (action) { 
        case "Record": 
         Log.i(TAG, CSubTag.bullet("ATRx.onPreExecute", "start Recording logs")); 

         mbtnLogFileAction.setText("Pause"); 
         metLogFileName.setEnabled(false); 

         String logFileName = metLogFileName.getText().toString(); 

         if (logFileName != null && !logFileName.isEmpty()) { 

          if (!mLogFileHT.containsKey(logFileName)) { 
           startTs = TimeUtils.getTSSec();//cant assign value to final variable 
           mLogFileHT.put(logFileName, startTs); 
          } else { 
           startTs = mLogFileHT.get(logFileName);//cant assign value to final variable 
          } 
+1

@ user2121:在課堂級聲明'startTs'。 :) – AndiGeeky

+0

爲什麼它在「OnClickListener」之外?它在哪裏使用?它的一生是什麼? – Andreas

回答

1

只需將全局startTs。

public class YourClass 
{ 


long startTs; 

// your other code goes here.. 

     mbtnLogFileAction.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       switch (action) { 
        case "Record": 
         Log.i(TAG, CSubTag.bullet("ATRx.onPreExecute", "start Recording logs")); 

         mbtnLogFileAction.setText("Pause"); 
         metLogFileName.setEnabled(false); 

         String logFileName = metLogFileName.getText().toString(); 

         if (logFileName != null && !logFileName.isEmpty()) { 

          if (!mLogFileHT.containsKey(logFileName)) { 
           startTs = TimeUtils.getTSSec();//cant assign value to final variable 
           mLogFileHT.put(logFileName, startTs); 
          } else { 
           startTs = mLogFileHT.get(logFileName);//cant assign value to final variable 
          } 

} 
0

nner類,startTs必須在最終使用它,因爲它是最終的,它應該是一個編譯時間常量,不能被重新分配

0

最終成員變量必須在聲明或內部構造函數時初始化,否則將導致編譯錯誤。