如何实现widget切换?

时间:2012-06-13 08:00:54

标签: android switch-statement

我正在寻找小工具Switch。不切换语句或切换活动等。

网上有非常罕见的教程。

我的问题是xml中的图形布局无法看到切换。

我的xml

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp" >

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="推送通知"
        android:textColor="#ffffff"
        android:textSize="20dp" />

    <TextView
        android:id="@+id/status"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/text"
        android:layout_marginTop="5dp"
        android:textColor="#ffffff"
        android:textSize="15dp" />

    <Switch
        android:id="@+id/switch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:textOff="关"
        android:textOn="开" />
</RelativeLayout>

错误发生在那里。

错误

Missing styles. Is the correct theme chosen for this layout? Use the Theme combo box above the layout to choose a different layout, or fix the theme style references.

NOTE: This project contains resource errors, so aapt did not succeed, which can cause rendering failures. Fix resource problems first.

Failed to find style 'switchStyle' in current theme java.lang.NullPointerException Exception details are logged in Window > Show View > Error Log

我不知道怎么做?

3 个答案:

答案 0 :(得分:2)

你的AndroidManifest.xml应该有

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

因为Switch小部件仅支持14级及以上API级别。

一个简单的例子..

main.xml
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

            <Switch
                android:id="@+id/bluetooth"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="32dip"
                android:text="Bluetooth"
                />

</GridLayout>

ur .java



package time.pass;

import android.os.Bundle;
import android.app.Activity;
import android.widget.CompoundButton;
import android.widget.Switch;
import android.widget.Toast;

public class TimePass extends Activity implements CompoundButton.OnCheckedChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_time_pass );

    Switch s = (Switch) findViewById(R.id.bluetooth);
    if (s != null) {
        s.setOnCheckedChangeListener(this);
    }
}


@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
   Toast.makeText(this, "Bluetooth is " + (isChecked ? "on" : "off"),
           Toast.LENGTH_SHORT).show();
}
}

答案 1 :(得分:0)

您可以使用android.support.v7.widget.SwitchCompat来实现向后兼容。

答案 2 :(得分:-3)

将xml文件的主题用作Theme.DeviceDefault