2012-10-30 47 views
0

解决:把我的文件在错误的文件夹,我的愚蠢的错误:)的Android onClickListener

任何人都知道为什么这是行不通的?它只是没有做任何事情。我认为正确定义了Main XML中的所有内容,但我觉得这里缺少一些东西。

我是Java/Android开发新手,但我很长一段时间都在使用VB.NET。

package com.example.myfirstapplication; 

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

public class Main extends Activity{ 

int counter; 
Button add, sub; 
TextView display; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    counter = 0; 
    add = (Button) findViewById(R.id.bAddOne); 
    sub = (Button) findViewById(R.id.bSubOne); 
    display = (TextView) findViewById(R.id.tvDisplay); 
    add.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      counter++; 
      display.setText("Your total is " + counter); 
     } 
    }); 
    sub.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      counter--; 
      display.setText("Your total is " + counter); 
     } 
    }); 
} 
} 

在此先感谢。

编辑:增加了布局。认为是没有必要的:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Your total is 0" 
    android:layout_gravity="center" 
    android:textSize="45dp" 
    android:id="@+id/tvDisplay"/> 
<Button 
    android:layout_width="250dp" 
    android:layout_height="wrap_content" 
    android:text="Add 1" 
    android:layout_gravity="center" 
    android:textSize="20dp" 
    android:id="@+id/bAddOne" /> 
<Button 
    android:layout_width="250dp" 
    android:layout_height="wrap_content" 
    android:text="Subtract 1" 
    android:layout_gravity="center" 
    android:textSize="20dp" 
    android:id="@+id/bSubOne"/> 
</LinearLayout> 

编辑:和清单:

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

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

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/title_activity_main" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 
+3

你可以包含你的'activity_main'布局吗? –

+2

尝试在'onClick()'方法中添加'@ Override' –

+0

通过“添加”,AA意味着在'public void onClick ...'之前将'@ Override'放在行上' –

回答

1

确定。快速解决方法是将活动的名称从Main.java更改为MainActivity .java。

package com.example.myfirstapplication; 

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

public class MainActivity extends Activity{ 

     int counter; 
     Button add, sub; 
     TextView display; 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      counter = 0; 
      add = (Button) findViewById(R.id.bAddOne); 
      sub = (Button) findViewById(R.id.bSubOne); 
      display = (TextView) findViewById(R.id.tvDisplay); 
      add.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v) { 
         counter++; 
         display.setText("Your total is " + counter); 
        } 
       }); 
      sub.setOnClickListener(new View.OnClickListener() { 

        public void onClick(View v) { 
          counter--; 
          display.setText("Your total is " + counter); 
        } 
     }); 
    } 
} 

的原因是,在AndroidManifest.xml启动活动被宣布为MainActivity:

<activity 
     android:name=".MainActivity" 
     android:label="@string/title_activity_main" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

正是在这行:机器人:名字= “MainActivity”,和

<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" /> 

说,这是首发和主要活动。

+0

它始终是.. – Sydcul

+0

没有在您的代码中查找。在Main.java里面。该类的名称是Main,而不是MainActivity。 –

+0

但我认为它总是被称为MainActivity。如果我犯了一个巨大的错误,请告诉我。编辑:好的只是注意到你的反应张贴这个。谢谢。我明天会试一试。 – Sydcul