Как получить последнюю версию Room?

Метод МЕТОДА 1 щелчок

HTMLElement s имеет метод click() https://developer.mozilla.org/en/DOM/element.click

function goToBar() {
   document.getElementById('foo').click();
}

Способ 2 Увольнение синтетических событий

Интересно, почему saluce удалил свой ответ. Это решение - это то, что я использовал в прошлом (когда клик был только IE). То есть, запуская синтетическое событие браузера (не поддельное, как jQuery click()). Позвольте мне опубликовать решение, используя эту идею ...

DEMO: http://jsfiddle.net/eyS6x/3/

/**
 * Fire an event handler to the specified node. Event handlers can detect that the event was fired programatically
 * by testing for a 'synthetic=true' property on the event object
 * @param {HTMLNode} node The node to fire the event handler on.
 * @param {String} eventName The name of the event without the "on" (e.g., "focus")
 */
function fireEvent(node, eventName) {
  // Make sure we use the ownerDocument from the provided node to avoid cross-window problems
  var doc;
  if (node.ownerDocument) {
    doc = node.ownerDocument;
  } else if (node.nodeType == 9 /** DOCUMENT_NODE */){
    // the node may be the document itself
    doc = node;
  } else {
    throw new Error("Invalid node passed to fireEvent: " + +node.tagName + "#" + node.id);
  }

  if (node.fireEvent) {
    // IE-style
    var event = doc.createEventObject();
    event.synthetic = true; // allow detection of synthetic events
    node.fireEvent("on" + eventName, event);
  } else if (node.dispatchEvent) {
    // Gecko-style approach is much more difficult.
    var eventClass = "";

    // Different events have different event classes.
    // If this switch statement can't map an eventName to an eventClass,
    // the event firing is going to fail.
    switch (eventName) {
      case "click":
      case "mousedown":
      case "mouseup":
        eventClass = "MouseEvents";
        break;

      case "focus":
      case "change":
      case "blur":
      case "select":
        eventClass = "HTMLEvents";
        break;

      default:
        throw "JSUtil.fireEvent: Couldn't find an event class for event '" + eventName + "'.";
        break;
    }
    var event = doc.createEvent(eventClass);
    var bubbles = eventName == "change" ? false : true;  
    event.initEvent(eventName, bubbles, true); // All events created as bubbling and cancelable.

    event.synthetic = true; // allow detection of synthetic events
    node.dispatchEvent(event);
  }
};

document.getElementById('button').onclick = function() {
   fireEvent( document.getElementById('link'), 'click');
}

1
задан KotlinIsland 17 January 2019 в 16:52
поделиться

3 ответа

Решение заключается в проверке AndroidX при запуске нового проекта в Android Studio, затем в файле App Module Build.Gradle отлично работает следующее:

def room_version = "2.1.0-alpha03"
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version" // use kapt for Kotlin
0
ответ дан KotlinIsland 17 January 2019 в 16:52
поделиться

Дело в том, что если вы используете AndroidX , то самое последнее - 2.1.0-alpha3, или, если вы используете библиотеки поддержки , то это 1.1.1, и это то, что упоминалось в документации . Как уже упоминалось в CommonsWare, это артефакт, и для выяснения отображений см. Эту документацию по отображению . И AndroidX это:

Библиотека AndroidX содержит существующую библиотеку поддержки, а также включает в себя последние компоненты Jetpack .

Пример использования вспомогательных библиотек:

dependencies {
    // Other libraries...
    implementation 'android.arch.persistence.room:runtime:1.1.1'
    annotationProcessor 'android.arch.persistence.room:compiler:1.1.1'
}
0
ответ дан Rajarshi 17 January 2019 в 16:52
поделиться

цитируется, что последняя версия Room - 2.1.0-alpha3

Это так.

, когда я помещаю эту версию в мой файл build.gradle, проект не может быть скомпилирован, и отображается следующая ошибка

Ваша версия в порядке. Ваш артефакт - проблема.

Все новые библиотеки AndroidX. Вы можете выбрать:

  • Придерживайтесь любой версии, которую вы используете прямо сейчас, и сохраните свой android.arch.persistence.room:runtime артефакт и его классы, или

  • Миграция в AndroidX, в этом случае вы должны использовать androidx.room:room-runtime в качестве артефакта, и вам нужно изменить свой код, чтобы ссылаться на классы androidx для Room и всего остального

0
ответ дан CommonsWare 17 January 2019 в 16:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: