按下按钮应该启动服务并显示文本,但是当我单击按钮时没有任何反应

时间:2017-07-27 14:55:45

标签: java android

我是Java的新手,当我使用服务按下按钮时,我试图创建一个简单的程序来显示文本。出于某种原因,当我按下“开始服务”和“停止服务”按钮时没有任何反应。这是我的代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}
public void startService(View view) {
    startService(new Intent(getBaseContext(), MyService.class));
}
public void stopService(View view) {
    stopService(new Intent(getBaseContext(), MyService.class));
}

public static class MyService extends Service {
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
        return START_STICKY;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
    }
}

按钮 -

<Button
    android:id="@+id/button"
    android:layout_width="132dp"
    android:layout_height="105dp"
    android:layout_marginTop="8dp"
    android:onClick="startService"
    android:text="@string/Buttton1"
    android:visibility="visible"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<Button
    android:id="@+id/button2"
    android:layout_width="128dp"
    android:layout_height="108dp"
    android:layout_marginTop="8dp"
    android:onClick="stopService"
    android:text="@string/Button2"
    android:visibility="visible"
    app:layout_constraintHorizontal_bias="0.503"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/button" />

2 个答案:

答案 0 :(得分:0)

我正在使用一个片段,这就是它无法正常工作的原因。我使用了MainActivity并且它有效。谢谢你的答案!

答案 1 :(得分:0)

有些不对劲。
1:我不认为你的服务应该是静态的。
2:您是否在 AndroidManifes.xml 中声明了您的服务? 3:您不需要使用 getBaseContext()

  • 如果您参与某项活动,请使用
  • 如果您使用 getActivity()
  • ,请使用

因此,您必须声明所有服务与Android清单中的所有活动相同。要执行此操作,请导航到位于app&gt;清单&gt; AndroidManifext.xml.Next下的应用清单,您需要在应用程序下添加服务标签与您的服务名称。 示例代码:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.android.myapplication">

    <application
        android:allowBackup="false"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        tools:ignore="GoogleAppIndexingWarning">
        <service android:name=".MyService"/> <-----This is were you declared your service
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

之后一切都应该正常。