Java 无法获取快速设置磁贴的引用
我可以使用onClick()方法设置qs磁贴的状态,但我还想使用主活动中的开关切换其状态。但是,我无法使用开关更改磁贴的状态,因为getQsTile在onClick()方法之外返回null }Java 无法获取快速设置磁贴的引用,java,android,Java,Android,我可以使用onClick()方法设置qs磁贴的状态,但我还想使用主活动中的开关切换其状态。但是,我无法使用开关更改磁贴的状态,因为getQsTile在onClick()方法之外返回null } 我可以简单地从应用程序中删除开关,但我很想知道这里有什么问题,以及如何克服它 如果要从其他活动以编程方式更新互动程序,请使用SharedReferences并存储布尔值,然后在互动程序服务类的onStartListening方法中编写代码以更新互动程序。(每次向下滑动面板时都会调用onStartListe
我可以简单地从应用程序中删除开关,但我很想知道这里有什么问题,以及如何克服它 如果要从其他活动以编程方式更新互动程序,请使用SharedReferences并存储布尔值,然后在互动程序服务类的onStartListening方法中编写代码以更新互动程序。(每次向下滑动面板时都会调用onStartListening)。请将您的代码作为问题的一部分,而不是在这些链接中的image.code
public class AwesomeTileService extends TileService{
Tile tile;
public Activity activity;
public AwesomeTileService(Activity activity){
this.activity=activity;
Switch switch1 = (Switch)this.activity.findViewById(R.id.switch1);
switch1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
tile=getQsTile(); //tile is null
SwitchState(); //SwitchState does not work with onCheckedChanged
Log.v("Switch State=", ""+isChecked);
}
});
}
public AwesomeTileService(){
//zero arg constructor
}
@Override
public void onTileAdded() {
tile=getQsTile();
tile.setState(Tile.STATE_INACTIVE);
tile.updateTile();
}
@Override
public void onClick() {
tile=getQsTile(); //tile is not null
SwitchState(); //SwitchState method works with onClick
}
public void SwitchState(){
if(tile!=null){
if (tile.getState() == Tile.STATE_INACTIVE) {
tile.setState(Tile.STATE_ACTIVE);
}
else{
tile.setState(Tile.STATE_INACTIVE);
}
tile.updateTile();
}
}