大家。我正在尝试创建一个简单的应用程序来计算按下按钮的次数。我正在尝试使用后台服务来执行此操作。该应用程序应该计算“按我!”的次数。单击并以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>
我还想在每次用户使用应用程序时获取日期,时间,纬度和经度。有人可以帮帮我吗?这是我第一次建立服务,我们非常感谢任何帮助。
答案 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
上调用它。