2011-10-02 62 views
1

有人可以幫我嗎?我的OnClickListener沒有觸發

我一直在尋找小時,我找不到解決方案。爲什麼我的onclicklistener不能工作?它第一次工作,但不會爲doLogin方法工作。爲什麼?

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     final FileUtils file = new FileUtils(); 
     final String patientDetails = FileUtils.readFile("/TextFiles/patientDetails.txt"); 

     if(patientDetails.equalsIgnoreCase("register")){ 
     setContentView(R.layout.main); 

     //Toast t = Toast.makeText(getBaseContext(), patientDetails, Toast.LENGTH_SHORT); 
     //t.show();  

     ImageButton submit = (ImageButton) findViewById(R.id.btn_submit); 
     submit.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 

       String patientId1 = ((EditText) findViewById(R.id.patientId1)).getText().toString().trim(); 
       String patientId2 = ((EditText) findViewById(R.id.patientId2)).getText().toString().trim(); 
       String patientPassword1 = ((EditText) findViewById(R.id.patientPassword1)).getText().toString().trim(); 
       String patientPassword2 = ((EditText) findViewById(R.id.patientPassword2)).getText().toString().trim(); 

       if((patientId1.equals(patientId2))||(patientPassword1.equals(patientPassword2))){ 

        //save to file 
        String result = file.writeFile1(patientId1+","+patientPassword1+",01:02:03:04:05"); 
        if(result.equalsIgnoreCase("fail")){ 
         Toast t = Toast.makeText(view.getContext(), "Patient details not saved, please try again.", Toast.LENGTH_SHORT); 
         t.show(); 
        }else{ 
         Toast t = Toast.makeText(view.getContext(), "Please login to use the application.", Toast.LENGTH_SHORT); 
         t.show(); 
        } 

        doLogin(); 
        //Intent myIntent = new Intent(view.getContext(), Activity2.class); 
        //startActivityForResult(myIntent, 0); 
       }else{ 

        Toast t = Toast.makeText(view.getContext(), "Please reenter your login details.", Toast.LENGTH_SHORT); 
        t.show(); 
       } 
      } 

     }); 
     }else{ 
     setContentView(R.layout.main2); 
     } 

    } 

    String _patientDetails = ""; 

    private void doLogin(){ 

     final FileUtils file = new FileUtils(); 
     _patientDetails = FileUtils.readFile("/TextFiles/patientDetails.txt"); 

     if(_patientDetails.equalsIgnoreCase("register")){ 
      setContentView(R.layout.main); 
     }else{ 
      ImageButton submit2 = (ImageButton) findViewById(R.id.btn_submit2); 
      Button pid3 = (Button)findViewById(R.id.pid3); 
      setContentView(R.layout.main2); 

      Button btn = (Button)findViewById(R.id.pid3); 
      btn.setOnClickListener(new OnClickListener(){   
       @Override   
       public void onClick(View v) { 

        Toast t = Toast.makeText(v.getContext(), "Please reenter your login details.", Toast.LENGTH_SHORT); 
        t.show(); 
        }   
       }); 
     } 
    } 
} 
+0

如果您引用的是「buttonPress」onClickListener,那是因爲您沒有將其設置爲任何按鈕。如果不是,告訴我們哪個監聽器不工作。 –

+1

您必須首次更具體地瞭解*作品,但不適用於doLogin方法*。描述你的問題,行動的流程。你期望發生什麼?這很難猜測... – Knickedi

回答

0

你真的通過調試器運行它嗎?我很確定它運行,但由於上下文,您沒有看到Toast通知。嘗試傳入Activity或Application上下文。

基本上,我敢肯定你不應該使用getBaseContext()。 View有getContext(),但在這種情況下,你可以使用Activity。

+0

Apologis,我不認爲我的編輯顯示 - 第一次用戶使用應用程序,他們看到註冊屏幕,當他們點擊註冊屏幕上的按鈕,他們被重定向到登錄屏幕。這發生在doLogin它在這裏,Btn btn在點擊時不起作用。我看過logcat並且沒有錯誤? –

+0

只需在適當的方法(例如,onClick處理程序)內設置幾個斷點並查看它們是否被觸發。 – Delyan