2013-07-02 28 views
0

你好我有一個關於Android的複選框問題=)鍵和鍵+複選框

我確實想做到,如果我按下復位按鈕,一個TextView將清除它的內容。 此TextView也將內容寫入文件。

如果我勾選我的複選框,然後按下按鈕同樣的事情發生,但它也應該刪除文件中的內容或只是刪除文件。 - >以消除將以其他方式加載的較舊會話的條目。

//global 
CheckBox mCheckFileDelete; 

//setupWidgets() which is called by onCreate() 
mCheckFileDelete = (CheckBox)findViewById(R.id.cBdeleteFile); 

//onClick (View view) 
if (view.getId()==R.id.btn2reset && mCheckFileDelete.isChecked()) 
     { 
      mMypoints.setText(null); 
      mErgebnis.setText(null); 
      setImage(5); 
      mNotenHistory.setText(""); 
      //Delete File 
      File f = new File(getFilesDir(), FILENAME); 
      f.delete(); 


    } 
else 
{ 
mMypoints.setText(null); 
mErgebnis.setText(null); 
setImage(5); 
mNotenHistory.setText("0"); 
} 

希望有人能給我提示。是否真的有必要設計一個獨立的方法來處理像developer.android文章顯示的整個isChecked()事物? 除此之外,我現在不怎麼在我的情況下實現這一點。

親切的問候

//編輯關於問題 MainActivity.onClick(查看視圖)

Button berechne = (Button) findViewById(R.id.btn1calc); 
Button reset = (Button) findViewById(R.id.btn2reset); 

    berechne.setOnClickListener(this); 
    reset.setOnClickListener(this); 

@Override 
    public void onClick(View view) 
    { 
     if (view.getId()==R.id.btn1calc) 
     { 
      //int ka_counter = 1; 
      double mypoints = Double.valueOf(String.valueOf(mMypoints.getText())); 

      String spinner_maxpoints_string = mMaxPoints_spin.getSelectedItem().toString(); 
      double spinner_maxToDouble = Double.valueOf(String.valueOf(spinner_maxpoints_string)); 

      double note = (6-(5*(mypoints/spinner_maxToDouble))); 
      double note_rounded = Math.round(note*100)/100.0; 
      String string_note = String.valueOf(note_rounded); 
      mErgebnis.setText(string_note); 


      if (string_note == null) 
      { 
       setImage(0); 
      } 
      else 
      { 
       if(note_rounded >= 1.0 && note_rounded <= 1.4) 
       { 
        setImage(1); 
       } 
       else 
       { 
        if (note_rounded >= 1.5 && note_rounded <= 1.9) 
        { 
         setImage(2); 
        } 
        else 
        { 
         if (note_rounded >= 2.0 && note_rounded <= 2.5) 
         { 
          setImage(3); 
         } 
         else 
         { 
          if (note_rounded >= 2.6 && note_rounded <= 3.2) 
          { 
           setImage(4); 
          } 
          else 
          { 
           if(note_rounded >= 3.3 && note_rounded <= 4.0) 
           { 
            setImage(5); 
           } 
           else 
           { 
            if(note_rounded >= 4.1 && note_rounded <= 4.9) 
            { 
             setImage(6); 
            } 
            else 
            { 
             if(note_rounded >= 5.0 && note_rounded <= 6.0) 
             { 
              setImage(7); 
             } 
            } 
           } 
          } 
         } 
        } 
       } 

      } 
      //ka_counter = ka_counter +1; 

      //mNotenHistory.setText("KA " + ka_counter +": " + string_note + "\n" + mNotenHistory.getText().toString()); 
      mNotenHistory.setText(string_note + "\n" + mNotenHistory.getText().toString()); 
      try { 
       FileOutputStream fo = openFileOutput(FILENAME, Context.MODE_APPEND); 
       fo.write(string_note.getBytes()); 
       fo.write("\n".getBytes()); 
       fo.close(); 

      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 


     } 

     if (view.getId()==R.id.btn2reset) 
     { 
      if(mCheckFileDelete.isChecked()) 
      { 
       mMypoints.setText(null); 
       mErgebnis.setText(null); 
       setImage(0); 
       mNotenHistory.setText(""); 
       //Delete File 
       File f = new File(getFilesDir(), FILENAME); 
       f.delete(); 
      } 
      else 
      { 
       mMypoints.setText(null); 
       mErgebnis.setText(null); 
       setImage(0); 
       mNotenHistory.setText("0"); 
      } 
     } 
    } 
+2

我不明白這個問題。什麼是/沒有處理你的代碼?如果通過「是否真的有必要設計一個獨立的方法來處理整個isChecked()...」,那麼你的意思是'checkChagedListener',那麼不需要。只有在'CheckBox'的狀態發生變化時才需要發生某種情況 – codeMagic

回答

0

在onClick事件選中複選框的狀態,然後根據它寫你的邏輯。它應該是這樣的:

//onClick (View view) 
if (view.getId()==R.id.btn2reset){ 
    if(mCheckFileDelete.isChecked()){ 
     mMypoints.setText(null); 
     mErgebnis.setText(null); 
     setImage(5); 
     mNotenHistory.setText(""); 
     //Delete File 
     File f = new File(getFilesDir(), FILENAME); 
     f.delete(); 
    } 
    else{ 
     mMypoints.setText(null); 
     mErgebnis.setText(null); 
     setImage(5); 
     mNotenHistory.setText("0"); 
    } 
} 
+0

您是不是重新編寫相同的代碼,而是將'if'語句分成兩個語句? – codeMagic

+0

準確地說,爲了獲得onClick事件中複選框的statut。 –

+0

也許我錯過了一些東西,但我只是沒有看到功能上的差異。 – codeMagic