2013-02-26 53 views
4

我正在學習Onclick事件和android中的監聽器。在路上,我創建了一個示例應用程序,我的目標是將給定的數字(register.java)保存在數據庫中,並在另一個活動(main.java)中顯示它。但是,現在點擊「保存」按鈕,什麼也沒有發生。即使是吐司方法也不起作用。Onclick方法在android中不起作用按鈕

這是我的代碼:

protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    data = register.this.openOrCreateDatabase("Number", MODE_PRIVATE, null); 
    data.execSQL("CREATE TABLE IF NOT EXISTS table1(number varchar(15));"); 

    e1 = (EditText)findViewById(R.id.mob_num); 
    b1 = (Button)findViewById(R.id.save); 
    b2 = (Button)findViewById(R.id.go); 

b1.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     number = e1.getText().toString(); 
     data.execSQL("INSERT INTO table1 VALUES('"+number+"')"); 
     Toast.makeText(getApplicationContext(), "'"+number+"'successfully inserted",Toast.LENGTH_SHORT).show(); 
     Intent i = new Intent(register.this, main.class); 
     startActivity(i); 
     finish(); 

    } 
}); 

b2.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     Intent i =new Intent(register.this,main.class); 
     startActivity(i); 
     data.close(); 
     finish(); 
    } 
}); 

} 

這裏是我的manifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="a.a.a" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="8" /> 

<uses-permission android:name="android.permission.CALL_PHONE"/> 
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 


<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 

    <activity android:name=".main" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 

     </intent-filter> 

     <intent-filter> 
      <action android:name="android.intent.action.PHONE_STATE"/>  
     </intent-filter> 


    </activity> 
</application> 

</manifest> 

我知道這在Android中一個非常基本的東西。但是,我希望你能幫助我。對不起,感謝您的時間。

+6

檢查您的按鈕在** .xml文件中是否可點擊** – Shiv 2013-02-26 11:39:29

+0

您是否收到錯誤消息?什麼是logcat輸出? – faceman 2013-02-26 11:41:49

+0

我可以在這裏粘貼整個logcat嗎?它有點冗長.. – Tony 2013-02-26 11:49:18

回答

0

提供的Logcat不提供任何信息,請提供正確的logcat。

點擊偵聽器的代碼是正確的。可能的異常只是空指針異常。因此,爲所有的數據庫創建和插入提供空檢查。

1

就試試這個簡單的方法來檢查按一下按鈕,並告訴我,如果它的工作原理:

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.Toast; 

public class MainActivity extends Activity implements OnClickListener { 
private Button closeButton; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    this.closeButton = (Button)this.findViewById(R.id.button); 
    this.closeButton.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    Toast.makeText(this, "You clicked the button", Toast.LENGTH_SHORT).show(); 

} 
} 
+0

嘿Shiv,我們是否應該在清單文件中爲此添加任何權限? – Tony 2013-02-26 15:55:23

+0

現在我正面臨着另一件事情:我的應用程序正在安裝,但無法在主屏幕中看到它,只能在應用程序列表。不知道發生了什麼。實際上對這些東西有點失望:(你可以幫我嗎? – Tony 2013-02-26 16:11:11

+0

好吧,別擔心,我們會嘗試修復它...只需粘貼你的清單文件 – Shiv 2013-02-26 17:17:23

4

有登記在Android的onClickListeners一個簡單的方法: 在您的按鈕的聲明中加入 android:onClick="onClick",並創建一個方法在Activity中包含名爲onClick(View v)的按鈕。從這裏您可以只需

switch(v) { 
    case R.id.save: 
     Toast.makeText(this, "save button has been pressed", Toast.LENGTH_LONG).show(); 
     break; 
    case R.id.go: 
     Toast.makeText(this, "go button has been pressed", Toast.LENGTH_LONG).show(); 
     break; 
     } 

依此類推,直到您註冊了活動中的所有按鈕。當然,你可以使用其他變量名稱,而不是我在這個例子中做的事情,只要記住onClick方法(或者任何你命名它)必須用View作爲參數調用,並且開關必須在該參數上運行。

1
Button btn, 
btnback = (Button) findViewById(R.id.activity_essentials_btnback); 

btn.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 

           Toast.makeText(v.getContext(), "Click here", 
         Toast.LENGTH_SHORT).show(); 

      } 
     });