标签: recreate

在API 23/Marshmallow中的onOptionsItemSelected()内的recreate()上出错

我正在努力使我的应用程序在API <23设备上完美运行,以便在API 23设备上运行.它在以下的场景中崩溃了.用户通过更改设置options menu.如果他们在菜单选项上慢慢点击(所以有时间看到突出显示的选项),一切都很好,但如果他们点击,应用程序崩溃.
我知道这是一种退出奇怪的行为,我花了一些时间试图理解是什么引发了错误.在重新创建()之后发生错误onOptionItemSelected.我在重新创建()之前设置了一个超时来测试该选项是否"已经过验证"但是没有用.我只能想到API 23中的某种错误,因为它之前使用过其他API.这是我的代码片段(减少到最低限度):

@Override
public boolean onOptionsItemSelected(MenuItem item) { 
   switch (item.getItemId()) {
      case R.id.menu_item_1:
            //... some code goes here
            recreate();
            return true;
            // some other options ..
    }
    return super.onOptionsItemSelected(item);
 }
Run Code Online (Sandbox Code Playgroud)

创建一个空白活动的新项目后,只需添加onOptionsItemSelected()

if (id == R.id.action_settings) {
    recreate();
    return true;
}
Run Code Online (Sandbox Code Playgroud)

该应用程序仍然崩溃.

这是logcat:

10-20 23:12:10.062 3217-3245/? E/Surface: getSlotFromBufferLocked: unknown    buffer: 0xab3d1b80
10-20 23:12:11.050 3217-3245/? E/Surface: getSlotFromBufferLocked: unknown buffer: 0xb4013030
10-20 23:12:11.075 3217-3245/? E/Surface: queueBuffer: error queuing buffer to SurfaceTexture, -19
10-20 23:12:11.075 3217-3245/? …
Run Code Online (Sandbox Code Playgroud)

android recreate android-activity android-6.0-marshmallow

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

重新创建活动并传递参数

我有一个活动可以监听偏好更改并重新加载应用程序。我正在recreate()这样做。但我不知道如何通过它传递参数,所以我求助于手动活动重新加载。

Intent intent = getIntent();
finish();
// add in the arguments as Extras to the intent
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

这具有我想要的行为,但对用户来说,重新创建活动并不顺利,因为他们会看到活动被终止并重新启动相同的活动。我希望用户不知道该活动已重新启动。所以,我的问题是我可以使用该方法recreate()并仍然通过它传递参数。

android recreate android-activity

6
推荐指数
2
解决办法
3055
查看次数

从另一个活动重新创建/重新启动活动

我看过这个问题,但没有得到好的答案,我的情况有点不同.我有2个活动A和B.从活动AI启动活动B但活动A必须保持打开,现在我登录活动BI后在共享首选项中保存一些数据,我需要活动A中的布局根据共享首选项值进行更改,因此登录后,活动A必须重新创建以应用更改,但仍应位于活动B之后.

所以我的问题是可以从Activity B重新创建活动A.

android recreate android-activity

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

在重新创建()后onBackPressed不调用

问题描述:

我的应用程序有主要活动和设置活动.每次关闭设置活动后,主活动都会重新创建.

可以通过finish()在两个位置关闭主活动(应用程序退出):操作栏中的主页按钮和后退按钮(硬件或弹出栏).

Home按钮工作没有问题,Back按钮在开始时工作,但如果用户在Settings Activity中,关闭它并返回到Main Activity,onBackPressed()函数不再被调用.

如果我删除娱乐,后退按钮工作正常,就像主页按钮一样.

所以,如果有人知道为什么重新创建()弄乱Back按钮?

谢谢.

部分相关代码:

主要活动:

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {

        // Open Settings Activity
        case R.id.menuSettings:

            Intent intent = new Intent(this, SettingsActivity.class);
            startActivityForResult(intent, REQUEST_SETTINGS);

            return true;

        // Close the App
        case android.R.id.home:

            finish();

            return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode != RESULT_OK) {

        return;
    }

    switch (requestCode) {

        case REQUEST_SETTINGS:

            // Recreate activity
            recreate();

            break; …
Run Code Online (Sandbox Code Playgroud)

android back-button recreate onbackpressed

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

为什么“--force-recreate”不重建我的 docker mysql 映像?

我创建了一个 docker MySql 5.7 映像,然后想更改几个名称。我的 docker-compose.yml 文件最终像这样

version: '3.3'

services:
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: 'maps_data'
      # So you don't have to use root, but you can if you like
      MYSQL_USER: 'myuser'
      # You can use whatever password you like
      MYSQL_PASSWORD: 'password'
      # Password for root access
      MYSQL_ROOT_PASSWORD: 'password'
    ports:
      # <Port exposed> : < MySQL Port running inside container>
      - '3406:3306'
    expose:
      # Opens port 3406 on the container
      - '3406'
      # Where our data will be …
Run Code Online (Sandbox Code Playgroud)

mysql recreate docker docker-compose

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

如何检查android是要重新创建活动还是销毁?

我有一个 android studio 项目。当我旋转屏幕时,android 会破坏并重新创建主要活动。如果android要重新创建活动,我如何在销毁过程中检查?

android recreate android-activity

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

光滑的滑块选项更改

我想知道是否有任何方法可以将新选项传递给已经创建的 Slick carousel?我有这个代码:

$('.bottom-slider').slick({
  asNavFor: '.top-slider',
  slidesToShow: 3,
  slidesToScroll: 1,
  variableWidth: true,
  centerMode: true,
  etc...
});
Run Code Online (Sandbox Code Playgroud)

并且在某个时候(添加了 CSS 类来重新设置滑块的样式)我想传递slidesToShow: 5给轮播。我试过

$('.bottom-slider').slick({slidesToShow: 5}); 
Run Code Online (Sandbox Code Playgroud)

但它不起作用。是否可以?我不想破坏/再次运行滑块或使用“重新设计的”轮播创建第二个框。

jquery slider options recreate slick.js

3
推荐指数
1
解决办法
2万
查看次数

砌体销毁并再次初始化

我已经初始化砌体插件 - 工作正常,

比我销毁它的媒体宽度 <= 767px - 它被销毁了

但是当我回到媒体宽度 > 767px 并再次初始化砌体时,它不起作用。

为什么?

或者是否有其他解决方案可以关闭 masonry 插件,然后在某些事件中打开它?

这是我的代码:

var masonryData = {
    isInitLayout: true,
    isResizeBound: false,
    itemSelector: '.item',
    columnWidth: 300,
    gutter: 20,
    transitionDuration: '0.5s'
};

function initializeMasonry(masonryData){
    if (jQuery().masonry) {
        var masonryContainer = jQuery('.masonry').masonry(masonryData);
        jQuery(masonryContainer).imagesLoaded(function(){
            jQuery(masonryContainer).masonry(masonryData);
        });
    }
}

function destroyMasonry(){
    if (jQuery().masonry) {
        jQuery('.masonry').masonry();
        jQuery('.masonry').masonry('destroy');
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用查询插件,所以我对 js 媒体查询使用匹配/不匹配方法:

$.Site.Match.smallScreen = function() {
   ...
   destroyMasonry();
   ...
}

$.Site.Match.mediumScreen = function() {
   ...
   initializeMasonry(masonryData);
   ...
}
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助

recreate destroy media-queries jquery-masonry

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