小编ban*_*ing的帖子

WordPress - 如何从textarea中清理多行文本而不会丢失换行符?

如果我清理并保存用户输入的一些元文本(称为"消息"),就像这样......

update_post_meta($post_id, 'message', sanitize_text_field($_POST['message']));
Run Code Online (Sandbox Code Playgroud)

...然后检索并尝试重新显示这样的文本......

echo '<textarea id="message" name="message">' . esc_textarea( get_post_meta( $post->ID, 'message', true ) ) . '</textarea>';
Run Code Online (Sandbox Code Playgroud)

......所有的换行都会丢失.

根据WordPress codex,sanitize_text_field()函数正在删除换行符.那么如何在不丢失换行符的情况下清理用户输入的文本呢?

php wordpress textarea line-breaks sanitize

16
推荐指数
2
解决办法
9521
查看次数

SecureRandom的Android实现是否会生成真正的随机数?

我已经读过,一般来说,SecureRandom的一些实现可能会产生真正的随机数.

特别是,Android文档

此类的实例将使用内部熵源生成初始种子,例如 /dev/urandom

但这是否意味着它会产生真正的随机数(即,而不是伪随机数)?

如果我SecureRandom以这种方式在Android中使用...

SecureRandom sr = new SecureRandom();
Run Code Online (Sandbox Code Playgroud)

...每当我打电话时,我会得到一个真正的随机输出sr.nextBoolean()吗?

或者,如果我每次都通过这样做获得输出,那么输出可能更多(或更少?)随机: new SecureRandom().nextBoolean()

java random android secure-random

14
推荐指数
2
解决办法
3532
查看次数

如何将 Android ViewPager2 的高度包装到当前项目的高度?

这个问题是针对新的ViewPager2类的。

旧的 ViewPager有一个类似的问题,但解决方案需要扩展ViewPager。但是,ViewPager2 是最终版本,因此无法扩展。

在我的情况下,我有一个包含三个不同片段的 ViewPager2。其中一个片段比其他两个片段高得多,这意味着当您滑动到较短的片段之一时,会有很多空白空间。那么如何有效地将 ViewPager2 包裹到当前片段的高度呢?

android android-fragments android-viewpager android-viewpager2

14
推荐指数
3
解决办法
6871
查看次数

Spinner:如何知道项目选择是通过编程方式更改还是通过用户操作通过UI更改

我有运行OnItemSelectedListenerspinner事件的代码.所以,当我在方法中时:

public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
    // I want to do something here if it's a user who changed the the selected item
}
Run Code Online (Sandbox Code Playgroud)

...我如何知道项目选择是通过编程方式完成还是通过用户操作通过UI完成?

android

12
推荐指数
3
解决办法
4236
查看次数

Android - 什么时候调用db.setTransactionSuccessful()?

我见过的Android SQLite事务的代码示例似乎在db.setTransactionSuccessful()之前自动调用db.endTransaction().

我想知道这是否是最佳做法,或者是否应该在打电话之前进行一些有条件的检查db.setTransactionSuccessful().

在我的情况下,我重写ContentProviderbulkInsert()方法,如果我使用描述的条件检查,我的方法将看起来像这样......

    @Override
public int bulkInsert(Uri uri, ContentValues[] valuesArray) {

    // Open a read / write database to support the transaction.
    SQLiteDatabase db = dbHelper.getWritableDatabase();

    switch (uriMatcher.match(uri)) {
        case BRANDS_SEARCH:

            int numInserts = 0;

            db.beginTransaction();

            for (int i = 0; i < valuesArray.length; i++) {

                // Insert the values into the table
                long rowId = db.insert(BRAND_NAMES_TABLE, null, valuesArray[i]);

                if (rowId > -1) {

                    // Increment numInserts
                    numInserts++;

                    // …
Run Code Online (Sandbox Code Playgroud)

sqlite android transactions

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

Android GCM是否与iOS推送通知反馈服务等效?

我们的webapp会向iOS和Android设备发送推送通知请求.

对于iOS,Apple推送通知服务具有反馈服务,因此您可以检测哪些设备已卸载您的应用程序,然后将其从数据库中删除.

Android GCM是否有类似的反馈服务?如果没有,如何检测哪些Android用户不再安装该应用?

service android feedback apple-push-notifications google-cloud-messaging

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

Android自定义键盘 - 预览视图约束到父布局

我创建了一个自定义键盘,它工作正常 - 除了前两行键的预览视图显示不够高.它们的垂直位置受到父布局的约束.

这些屏幕截图说明了问题 - "0"和"8"的预览位置是好的,但对于"5"和"2",它不是:

键'0'的预览显示在按钮上方...

按钮'0'

键'8'的预览也显示在按钮上方...

按钮'8'

但键'5'的预览未显示在按钮上方...

按钮'5'

键'2'的预览未显示在按钮上方...

按钮'2'

如何克服,因此"5"和"2"的预览显示在它们各自键上方相同的距离处,与"0"和"8"相同.

这是我的keyboard.xml ...

<android.inputmethodservice.KeyboardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/keyboard"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:keyPreviewLayout="@layout/keyboard_key_preview" />
Run Code Online (Sandbox Code Playgroud)

这是我的keyboard_key_preview.xml ...

<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:background="@color/keyboard_preview_bg"
    android:textColor="@color/keyboard_preview_fg"
    android:textStyle="bold"
    android:textSize="@dimen/keyboard_preview_text_size" />
Run Code Online (Sandbox Code Playgroud)

这是我的keyboard_numeric.xml布局......

<Keyboard
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:keyWidth="33.33%p"
    android:keyHeight="@dimen/keyboard_key_height"
    android:horizontalGap="@dimen/keyboard_horizontal_gap"
    android:verticalGap="@dimen/keyboard_vertical_gap">
    <Row android:rowEdgeFlags="top">
        <Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left"/>
        <Key android:codes="50" android:keyLabel="2"/>
        <Key android:codes="51" android:keyLabel="3" android:keyEdgeFlags="right"/>
    </Row>
    <Row>
        <Key android:codes="52" android:keyLabel="4" android:keyEdgeFlags="left"/>
        <Key android:codes="53" android:keyLabel="5"/>
        <Key android:codes="54" android:keyLabel="6" android:keyEdgeFlags="right"/>
    </Row>
    <Row>
        <Key android:codes="55" android:keyLabel="7" android:keyEdgeFlags="left"/>
        <Key android:codes="56" android:keyLabel="8"/>
        <Key …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-custom-keyboard

10
推荐指数
2
解决办法
2281
查看次数

什么 ViewModelStoreOwner 用于 Fragment 中的 ViewModelProvider?

我创建了一个测试活动来更新我的 MyViewModel 中的一些文本。

我想在Fragment 中观察这些变化,但是当我使用

MyViewModel myViewModel = new ViewModelProvider(this).get(MyViewModel.class);
Run Code Online (Sandbox Code Playgroud)

它给了我一个与活动中使用的不同的 MyViewModel 实例,这导致我onChanged()在片段中的回调不被调用。

只有当我将相同的片段代码修改为

HomeViewModel homeViewModel = new ViewModelProvider(getActivity()).get(HomeViewModel.class);
Run Code Online (Sandbox Code Playgroud)

片段是否获得与活动相同的 MyViewModel 实例 - 所以 onChanged()被成功调用。

但是,我不确定使用getActivity()作为 ViewModelStoreOwner 是否是正确的做事方式,因为我没有在任何地方的任何示例中看到过这种情况。我想知道在这种情况下是否应该使用更好的 ViewModelStoreOwner?

android android-fragments android-livedata android-viewmodel

10
推荐指数
2
解决办法
4513
查看次数

从哪里开始开发WordPress/WooCommerce主题?

我已经交了一些PSD,需要使用WordPress和WooCommerce创建一个电子商务网站.我找到了几个用于创建WordPress主题的资源... http://codex.wordpress.org/Theme_Development http://themeshaper.com/2009/06/22/wordpress-themes-templates-tutorial/

...但是因为我将要使用WooCommerce,我是否仍然需要遵循这些指南,或者WooCommerce开发阶段是否会使上述指南变得多余?

我已经研究了这个,但是如果你不熟悉WordPress和WooCommerce,我发现的资源并不清楚从哪里开始.

先感谢您.

html php wordpress e-commerce woocommerce

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

PHP - 使用session.use_trans_sid时会话ID发生变化

我开发了一个使用基于cookie的会话的PHP Web应用程序,它一切正常 - 直到我意识到它将无法在禁用第三方cookie的浏览器中工作(因为脚本将在iframe上加载另一个网站/域名).

所以我决定切换到基于URL的会话(我认为这是安全的,因为脚本在iframe中,没有可见的URL供用户共享或书签等).

但是,出于某种原因,由于我切换到基于域的会话,我的Web应用程序中的每个页面都使用不同的会话ID.

这是我的代码......

ini_set("session.use_cookies", 0);
ini_set("session.use_only_cookies", 0);
ini_set("session.use_trans_sid", 1);
ini_set("session.cache_limiter", "");
session_start();
echo "<p>Session ID: " . session_id() . "</p>"; // Test output
Run Code Online (Sandbox Code Playgroud)

...这是在每个页面上调用的第一件事(没有我以前知道的输出).

我的Web应用程序的第一页包含一个表单,我看到PHP自动添加了所需的隐藏会话ID输入:

<input type="hidden" name="PHPSESSID" value="m4jbeec47uplnf95ue2h244a02" />

但是下一页(表单提交给)的会话ID是

会话ID: iiovfkrf3hesj1um5orasv7it6

此外,当我使用https://(而不是http://)加载第一页时,提交表单会导致重新加载相同的页面(而不是正在加载的下一页).

我已经尝试过的:

ini_set("session.cookie_secure", 0);

ini_set("session.cookie_secure", 1);

ini_set('session.gc_maxlifetime', 30 * 60); // expires in 30 minutes

和(在脚本的末尾)

session_write_close();

并删除

ini_set("session.cache_limiter", "");

来自phpinfo():

session.auto_start  Off Off
session.cache_expire    180 180
session.cache_limiter   nocache nocache
session.cookie_domain   no value    no value …
Run Code Online (Sandbox Code Playgroud)

php session

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