小编Chr*_*ser的帖子

Android日历提供程序:是否有可用于多个设备的事件的唯一标识符?

我正在使用Android日历提供程序来显示事件.我还通过使用事件的EVENT_ID作为参考,将事件与本地应用程序数据库中的图像相关联.

我现在想知道是否可以在多个设备上保留相同的引用?

我了解到,对于account_type ='com.google',GoogleCalendarSyncAdapter使用CalendarContract.EventsColumns.SYNC_DATA1来存储事件的googleID.但是,这似乎不是访问数据的可靠方法,因为SYNC_DATA列的使用可能随时发生变化,并且只能由SyncAdapter修改.

有没有其他方法可以跨设备保持对日历提供程序事件的引用?

android calendar android-contentprovider android-syncadapter

10
推荐指数
1
解决办法
735
查看次数

Android:View.setClickable消耗点击事件

我有一个用于水平滚动的自定义图库视图和几个所有应该可点击的子视图.

设置childview.setOnClickListener()不起作用,因为它总是消耗触摸事件.

因此,我使用childview.setOnTouchListener()并让其onTouch方法返回false,以使Gallery变为可滚动.

这一切都很好.

现在的问题是,childView的onTouch方法只会触发ACTION_DOWN事件.除非我通过设置使View可单击,否则它不会传递MotionEvent ACTION_UPchildview.setClickable().但是,设置View clickable本身似乎会消耗onTouch事件,以便库视图变为不可滚动.

好像我在这里走了一圈.我会感激任何帮助.

这是我的代码

图库视图:

public class myGallery extends Gallery {

    public myGallery(Context ctx, AttributeSet attrSet) {
        super(ctx, attrSet);
        // TODO Auto-generated constructor stub
    }

    private boolean isScrollingLeft(MotionEvent e1, MotionEvent e2){ 
           return e2.getX() > e1.getX(); 
        }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY){
      int kEvent;
      if(isScrollingLeft(e1, e2)){ //Check if scrolling left
        kEvent = KeyEvent.KEYCODE_DPAD_LEFT;
      }else{ //Otherwise scrolling right
        kEvent = KeyEvent.KEYCODE_DPAD_RIGHT;
      } …
Run Code Online (Sandbox Code Playgroud)

android clickable ontouchlistener

6
推荐指数
1
解决办法
4855
查看次数

Android Calendar Provider Sync - SYNC_DATA 列?

我想在内部 Android 日历和我的应用程序之间进行同步。我正在使用从 Android API 14 开始提供的 CalendarContract。

内容提供程序“com.android.calendar”的任何更改都会调用我的同步适配器的 onPerformSync(..)。但是,此时,事件的所有行都设置为 DIRTY = 0。这意味着,在我的同步适配器可以访问它们之前,Google 日历同步必须将 DIRTY FLAG 设置为零。

CalendarContract.EventsColumns.SYNC_DATA1 - SYNCDATA10 被认为是用于同步适配器的内容提供者的列。有人知道这些列的用途是否有一些约定?我意识到在我的设备上 SYNC_DATA5 存储了上次修改的日期,而 SYNC_DATA1 似乎存储了 Google 事件 ID。因此,似乎每当日历应用程序与 Google 日历同步时,这些列都会被修改。

但是,如果我选择为我的同步适配器使用这些列之一,我如何确保另一个应用程序不使用相同的列并且它们相互覆盖?

如果 Google 日历始终使用 SYNC_DATA5 来存储上次修改的日期,我只需将其用于同步逻辑就可以了,我只需要确定这是一个约定。

android calendar sync android-contentprovider

5
推荐指数
1
解决办法
2422
查看次数

Android Lollipop:在将Home小部件添加到主屏幕时,Launcher崩溃了

当添加Widget时,Launcher在Android Lollipop上崩溃,发出以下消息(在以前的Android版本上运行正常):

编辑:这只发生在横向方向.

12-16 12:35:10.208: E/AndroidRuntime(960): 
java.lang.RuntimeException: Unable to resume activity {com.android.launcher/com.android.launcher2.Launcher}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=5, result=-1, data=Intent { (has extras) }}  to activity {com.android.launcher/com.android.launcher2.Launcher}: java.lang.NullPointerException:      Attempt to read from field 'android.content.pm.ActivityInfo     
android.appwidget.AppWidgetProviderInfo.providerInfo' on a null object reference
12-16 12:35:10.208: E/AndroidRuntime(960):  at 
android.appwidget.AppWidgetHostView.getRemoteContext(AppWidgetHostView.java:465)
12-16 12:35:10.208: E/AndroidRuntime(960):  at   
android.appwidget.AppWidgetHostView.updateAppWidget(AppWidgetHostView.java:376)
12-16 12:35:10.208: E/AndroidRuntime(960):  at com.android.launcher2.LauncherAppWidgetHostView.updateAppWidget(LauncherAppWidgetHostView.java:54)
12-16 12:35:10.208: E/AndroidRuntime(960):  at android.appwidget.AppWidgetHost.createView(AppWidgetHost.java:325)
12-16 12:35:10.208: E/AndroidRuntime(960):  at com.android.launcher2.Launcher.completeTwoStageWidgetDrop(Launcher.java:703)
12-16 12:35:10.208: E/AndroidRuntime(960):  at  com.android.launcher2.Launcher.onActivityResult(Launcher.java:664)
Run Code Online (Sandbox Code Playgroud)

这是提供商信息:

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
  android:minWidth="201dp"
  android:minHeight="201dp"
  android:updatePeriodMillis="180000"
  android:initialLayout="@layout/appwidget_week" …
Run Code Online (Sandbox Code Playgroud)

android android-appwidget

5
推荐指数
1
解决办法
815
查看次数

Android Activity:外部触摸事件的侦听器

我有一个显示为对话框的活动:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.setTheme(android.R.style.Theme_Dialog);
    setFinishOnTouchOutside(true);
}
Run Code Online (Sandbox Code Playgroud)

当用户通过触摸 Activity-Dialog 窗口之外来关闭 Activity-Dialog 时,Activity 完成。

如何在此事件上设置侦听器?

这很重要,因为我希望能够打电话

setResult(intResultCode, intent);
Run Code Online (Sandbox Code Playgroud)

就在完成之前。

在 onPause() 中调用 setResult() 可能已经太晚了。

java android android-dialog android-activity onactivityresult

1
推荐指数
1
解决办法
2169
查看次数

从回调函数中调用其他函数时"Obect没有方法"

我正在使用骨干网,我正在尝试设置回调,如下所示:

app.myView = Backbone.View.extend({

     events : {
        'click #myButton' : 'onClick',
        },

    onClick : function(e) {
        var self = this;
        myModel.save(null, {
            success : self.successAction
        });
        return false;
    },

    successAction : function() {
        this.myOtherFunction();
    },

    myOtherFunction : function() {
        this.$el.hide();
    }

}); 
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

TypeError: Object [object global] has no method 'myOtherFunction' 
Run Code Online (Sandbox Code Playgroud)

如何在回调函数中调用同一个类的另一个函数?

另外,我想问一下,通常可以使用回调函数传递参数吗?像这样:

myModel.save({
    "success" : successAction(param1, param2)
});

successAction : function(param1, param2) {
    this.myOtherFunction();
}
Run Code Online (Sandbox Code Playgroud)

javascript backbone.js

0
推荐指数
1
解决办法
72
查看次数