测量在Android应用程序中单击按钮的次数

时间:2011-03-01 06:10:43

标签: android

大家。我正在尝试创建一个简单的应用程序来计算按下按钮的次数。我正在尝试使用后台服务来执行此操作。该应用程序应该计算“按我!”的次数。单击并以Toast形式单击“退出”按钮时显示该编号。它运行,但它没有显示buuton点击次数。我的代码如下:

public class MainActivity extends Activity {

Button  buttonStop, press;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    buttonStop = (Button) findViewById(R.id.buttonStop);
    press = (Button) findViewById(R.id.buttonpress);

}


    public void onClick(View src) {
        switch (src.getId()) {
        case R.id.buttonpress:
            Toast.makeText(MainActivity.this, "Service has started", Toast.LENGTH_SHORT).show();
          startService(new Intent(this, MyService.class));
          break;
        case R.id.buttonStop:
          stopService(new Intent(this, MyService.class));
          finish();
          break;

        }
    }

public class MyService extends Service {

int count= 0;
MainActivity main;
/**
 * @see android.app.Service#onBind(Intent)
 */
@Override
public IBinder onBind(Intent intent) {
    // TODO Put your code here
    return null;
}

@Override
public void onCreate() {

    Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();


    }

public void onDestroy() {

    Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
    Toast.makeText(this, "Number of times this button was pressed = " + count, Toast.LENGTH_LONG).show();

}

public void onStart(Intent intent, int startid) {

    count = count +1 ;

}
}

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView  
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="@string/hello"
/>

<Button android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Exit" 
android:id="@+id/buttonStop">
</Button>  


<Button android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Press Me!" 
android:id="@+id/buttonpress">
</Button>  

</LinearLayout>

我还想在每次用户使用应用程序时获取日期,时间,纬度和经度。有人可以帮帮我吗?这是我第一次建立服务,我们非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

你快到了!

你忘了做的三件事:

  • 让您的MainActivity实施View.OnClickListener - 如果您在onClick()方法之前使用过@Override,则编译器会将您拒之门外。通常,每当您实现希望框架调用的函数时,请使用@Override作为完整性检查。

  • 使用View.setOnClickListener() 将MainActivity附加到按钮 - 这实际上告诉按钮在单击时调用onClick()方法。

  • (可能)在AndroidManifest.xml中定义您的服务 - 在您的元素中粘贴<service android:name="MyService"/>。如果你没有这样做,你可以通过查看Logcat(DDMS或Debug透视图)找到答案。它会说:

  

无法启动服务意图[...]:未找到

这就是我在代码中需要更改的全部内容,然后我的屏幕上出现了适当的点击次数。

答案 1 :(得分:0)

要确保显示Toast消息,请在Exit按钮单击而不是onDestroy上调用它。