小编use*_*282的帖子

Kotlin-Java 互操作不适用于可变参数

我想抽象出在Android中获取资源,所以我写了一个ResourceProvider实际提供资源的类:

@Singleton
class ResourceProvider @Inject constructor(private val context: Context) {
fun getString(@StringRes id: Int): String {
    return context.getString(id)
}

fun getString(@StringRes id: Int, vararg formatArgs: Any): String {
    return context.getString(id, formatArgs)
}
...
}
Run Code Online (Sandbox Code Playgroud)

这里没什么特别的,只是在 上调用方法Context。当我想获取带参数的字符串时遇到问题,我创建了以下示例:

var fromContext = requireContext().getString(R.string.one_parameter_string, "Text")
Log.i("fromContext", fromContext)
var fromWrapper = resourceProvider.getString(R.string.one_parameter_string, "Text")
Log.i("fromWrapper", fromWrapper)

fromContext = requireContext().getString(R.string.two_parameter_string, "Text", "Text")
Log.i("fromContext", fromContext)
fromWrapper = resourceProvider.getString(R.string.two_parameter_string, "Text", "Text")
Log.i("fromWrapper", fromWrapper)
Run Code Online (Sandbox Code Playgroud)

以下是字符串资源:

<string formatted="false" name="two_parameter_string">Text with parameters: %s, %s</string>
<string formatted="false" name="one_parameter_string">Text with …
Run Code Online (Sandbox Code Playgroud)

java android jvm kotlin

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

通过AsyncHttpClient将JSON作为POST请求发送到服务器

我想使用LoopJ的AsndroidAsyncHttpt将JSON作为POST发送到我的localhost服务器.我正在使用这种方法: public void post(Context context, String url, HttpEntity entity, String contentType, AsyncHttpResponseHandler responseHandler) 在我的代码中,但它不起作用.这是我的代码:

private void  loginUser() throws JSONException, UnsupportedEncodingException {
    String login = textLogin.getText().toString();
    String password = textPassword.getText().toString();

    JSONObject jsonObject = new JSONObject();
    if(Utility.isNotNull(login) && Utility.isNotNull(password)) {
        jsonObject.put("username", login);
        jsonObject.put("password", password);
        invokeWS(jsonObject);
    }
    else{
        Toast.makeText(getApplicationContext(), "Prosz? wype?ni? wszystkie pola!", Toast.LENGTH_LONG).show();
    }
}

private void invokeWS(JSONObject jsonObject) throws UnsupportedEncodingException {
    StringEntity entity = new StringEntity(jsonObject.toString());
    AsyncHttpClient client = new AsyncHttpClient();

    Log.i("SER", "http://" + Constants.address + ":" + Constants.port + "/silownia_java/rest/login/auth" …
Run Code Online (Sandbox Code Playgroud)

android json android-async-http

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

是否可以更改导航组件中的向上按钮图标?

我想更改与导航组件一起使用的 ActionBar 中的向上按钮图标。我尝试了几种选择,例如:

supportActionBar?.setHomeAsUpIndicator(R.drawable.ic_arrow_left_blue_24dp)
Run Code Online (Sandbox Code Playgroud)

MainAcitivty

app:navigationIcon="@drawable/ic_arrow_left_blue_24dp"
Run Code Online (Sandbox Code Playgroud)

Toolbar.xml 文件中,似乎没有任何效果。

我有一个非常标准的设置

setSupportActionBar(appToolbar.toolbar)
setupActionBarWithNavController(this, navController)
Run Code Online (Sandbox Code Playgroud)

MainActivity:onCreate方法中调用。

我希望

supportActionBar?.setHomeAsUpIndicator(R.drawable.ic_arrow_left_blue_24dp)
Run Code Online (Sandbox Code Playgroud)

会起作用,因为例如ActionBar通过调用禁用标题:

supportActionBar?.setDisplayShowTitleEnabled(false)
Run Code Online (Sandbox Code Playgroud)

按预期工作,Fragment导航时标题未设置为名称。

更重要的是,我进行了一些调查,ActionBarOnDestinationChangedListener其中有一个调用将setNavigationIcon图标设置为DrawerArrowDrawable,这有点奇怪,因为我没有Drawer在我的设置中使用。

也改为:

setupWithNavController(toolbar, navController)
Run Code Online (Sandbox Code Playgroud)

不工作,因为ToolbarOnDestinationChangedListener也使用相同的DrawerArrowDrawable.

android android-navigation android-jetpack android-architecture-navigation

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

在Flask中使用SQLAlchemy创建数据库

我想知道,在Flask中创建SQLAlchemy数据库需要做些什么.根据文档,我应该在我的Flask应用程序中创建模型然后转到Python shell并使用db.create_all()创建它.但这不起作用.

我的烧瓶应用:

import os
import flask
import settings
from flask_sqlalchemy import SQLAlchemy

app = flask.Flask(__name__)
app.config['SESSION_TYPE'] = 'filesystem'
app.secret_key = os.urandom(24)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////database.db'
db = SQLAlchemy(app)
(...)
Run Code Online (Sandbox Code Playgroud)

模型:

from app import db

class User(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    username = db.Column(db.String(15), unique = True)
    password = db.Column(db.String(15), unique = True)
    tasks = db.relationship('Task', backref='author', lazy='dynamic')

    def __init__(self, username, password):
        self.username = username
        self.password = password

class Task(db.Model):
    id = db.Column(db.Integer, primary_key = …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask

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

在 onCreateViewHolder 中创建的 ViewHolder 中手动创建的视图

我想制作通用适配器,让我可以重用它。这就是为什么我决定不创建 view by inflating,而是将之前创建的自定义视图传递给ViewHolderin ListAdapter( RecyclerView) in onCreateViewHolder。根据其文档,它应该是可能的,因为它说:

您可以手动创建新视图也可以从 XML 布局文件对其进行扩充。

这是我的适配器实现:

class BaseAdapter<T, V : View>(
        private val adapterConfig: AdapterConfig<T, V>,
        private val onClick: (T) -> (Unit)
) : ListAdapter<T, BaseViewHolder<V>>(adapterConfig.diffCallback) {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder<V> {
        return adapterConfig.viewHolder.apply {
            itemView.setOnClickListener { onClick(getItem(adapterPosition)) }
        }
    }

    override fun onBindViewHolder(holder: BaseViewHolder<V>, position: Int) {
        adapterConfig.bind(getItem(position), holder, position)
    }
}
Run Code Online (Sandbox Code Playgroud)

AdapterConfig实现类负责创建ViewHolder,它看起来像这样:

override val viewHolder: BaseViewHolder<ScorerView> …
Run Code Online (Sandbox Code Playgroud)

android android-viewholder android-recyclerview

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

尝试安装jpl库时出错.jpl.dll:找不到依赖库

我在安装jpl库时遇到问题.我安装了最新的swipl版本(但之前我也尝试过不稳定的版本):

SWI-Prolog 7.2.3 for Windows 7/8/10 64-bit edition
Run Code Online (Sandbox Code Playgroud)

然后我添加了依赖路径到环境变量:

Variable: SWI_HOME_DIR 
Value: C:\Program Files\swipl
Run Code Online (Sandbox Code Playgroud)

然后我补充说,Path这些值:

%SWI_HOME_DIR%\lib\jpl.jar;
%SWI_HOME_DIR%\lib;
%SWI_HOME_DIR%\bin
Run Code Online (Sandbox Code Playgroud)

我还添加了这样的VM参数:

-Djava.library.path="C:\Program Files\swipl\bin"
Run Code Online (Sandbox Code Playgroud)

确保Eclipse看到此文件夹.

之后我仍然得到错误:

Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: C:\Program Files\swipl\bin\jpl.dll: Can't find dependent libraries
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1937)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1855)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.System.loadLibrary(System.java:1122)
    at org.jpl7.JPL.loadNativeLibrary(JPL.java:79)
    at org.jpl7.fli.Prolog.<clinit>(Prolog.java:41)
    at org.jpl7.Query.open(Query.java:260)
    at org.jpl7.Util.textToTerm(Util.java:102)
    at org.jpl7.Query.Query1(Query.java:129)
    at org.jpl7.Query.<init>(Query.java:120)
Run Code Online (Sandbox Code Playgroud)

我100%肯定,Eclipse会看到该jpl.dll文件,但在我看来,它似乎需要一些其他库.

我知道这个帖子可能与以下任何一个都重复:

jpl.dll:找不到依赖库
JPL找不到jpl.dll的依赖库

但这些问题没有得到解答,或者答案在我的案例中没有帮助.

java eclipse dll prolog swi-prolog

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

Android Automotive模拟器“未为此目标安装系统映像”

我已经从稳定频道安装了Android Studio 3.5。我正在尝试构建Android Automotive Emulator,但收到以下错误

没有为此目标安装系统映像

我已经下载了以下系统映像

Google API Intel x86 Atom_64系统映像

当我尝试制作电话/平板电脑模拟器时,将显示此图像。我正在使用Mac Mojave。我是否需要安装Android 10系统映像来解决此错误?

android-emulator android-automotive

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

为什么 check_password_hash 在此登录视图中始终返回 False?

set_password_hash我有一个用户模型,具有使用 Werkzeug和函数设置和检查密码的功能check_password_hash

模型.py

class User(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    username = db.Column(db.String(15), unique = True)
    password = db.Column(db.String(15))
    tasks = db.relationship('Task', backref='author', lazy='dynamic')

    def __init__(self, username, password):
        self.username = username
        self.set_password(password)

    def set_password(self, password):
        self.password = generate_password_hash(password)

    def check_password(self, password):
        return check_password_hash(self.password, password)
Run Code Online (Sandbox Code Playgroud)

登录.py

def post(self): 
    username = flask.request.form['username']
    passwd = flask.request.form['passwd']
    user = User.query.filter_by(username = username).first()
    flask.flash(user.check_password(user.password))
    if user and user.check_password(user.password):
        flask.session['username'] = username
    else:
        flask.flash("User doesn't exist or password is inccorect.")
        return flask.render_template('login.html') …
Run Code Online (Sandbox Code Playgroud)

python hash flask

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

在运行时更改上传路径 (UPLOAD_FOLDER)

如何在运行时更改上传文件夹?我希望能够更改文件上传到的位置,但我不知道如何更改。

我试过这样的事情,但我得到KeyError

@app.route('/upload', methods=['POST'])
def upload():
    file = request.files['file']
    path = 'uploads/text'
    if file and allowed_file(file.filename):
        filename = secure_filename(file.filename)
        UPLOAD_FOLDER = path
        file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
        return redirect(url_for('uploaded_file',
                                filename=filename))
Run Code Online (Sandbox Code Playgroud)

python flask

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

尝试使用Dagger2和Kotlin将ViewModelProvider注入Activity时出错

我收到,而试图注入下面的错误ViewModelProvider.FactoryActivity:

e: D:\AndroidStudioProjects\VolleyballStats\app\build\tmp\kapt3\stubs\debug\com\example\kamil\volleyballstats\di\AppComponent.java:6: error: [dagger.android.AndroidInjector.inject(T)] java.util.Map<java.lang.Class<? extends android.support.v4.app.Fragment>,javax.inject.Provider<dagger.android.AndroidInjector.Factory<? extends android.support.v4.app.Fragment>>> cannot be provided without an @Provides-annotated method.
e: 

e: public abstract interface AppComponent extends dagger.android.AndroidInjector<com.example.kamil.volleyballstats.VolleyballStatsApp> {
e:                 ^
e:       java.util.Map<java.lang.Class<? extends android.support.v4.app.Fragment>,javax.inject.Provider<dagger.android.AndroidInjector.Factory<? extends android.support.v4.app.Fragment>>> is injected at
e:           dagger.android.DispatchingAndroidInjector.<init>(injectorFactories)
e:       dagger.android.DispatchingAndroidInjector<android.support.v4.app.Fragment> is injected at
e:           dagger.android.support.DaggerAppCompatActivity.supportFragmentInjector
e:       com.example.kamil.volleyballstats.views.main.MainActivity is injected at
e:           dagger.android.AndroidInjector.inject(arg0)
Run Code Online (Sandbox Code Playgroud)

我已经创建了非常标准的Dagger2实现,如下所示:

@Singleton
@Component(modules = arrayOf(
        AndroidInjectionModule::class,
        AppModule::class,
        MainActivityModule::class))
interface AppComponent : AndroidInjector<VolleyballStatsApp> {

@Component.Builder
interface Builder {
    @BindsInstance
    fun application(application: VolleyballStatsApp): Builder
    fun …
Run Code Online (Sandbox Code Playgroud)

android dependency-injection kotlin dagger-2

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