小编Aun*_*iha的帖子

使用PartMap Retrofit 2上传多个文件

发布新产品时,我的服务器需要使用密钥捕获文件。多少个文件没有限制。文件是无限的。

使用Retrofit 1.9,一切都完美无缺。更新到Retrofit 2后,我的服务器未收到任何文件。

如果我编辑服务器,它将不再向后兼容。我需要使android应用能够像Retrofit 1.9一样工作。

这是我的实现方式。

改装1.9

类以创建ApiService接口。

public class ApiClient {

    public interface ApiInterface {

        @Multipart
        @POST("/products/")
        void uploadProduct(
                @PartMap Map<String, String> params,
                @PartMap Map<String, TypedFile> files,
                Callback<Product> cb);

    }

}
Run Code Online (Sandbox Code Playgroud)

使用ApiService。

Map<String, String> params = new HashMap<>();
params.put("title", title);
params.put("price", price);
params.put("content", content);

Map<String, TypedFile> files = new HashMap<>();
for (int pos = 0; pos < photoPaths.length; pos++) {
    if (!Strings.isNullOrEmpty(photoPaths[pos])) {
        TypedFile typedFile = new TypedFile("multipart/form-data", new File(photoPaths[pos]));
        files.put("photo_" + String.valueOf(pos + 1), typedFile);
    }
} …
Run Code Online (Sandbox Code Playgroud)

android retrofit retrofit2

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

如果我使用支持库26,为什么选项菜单项会被挤压?

选项菜单项具有支持库25应该具有的大小,但是当我使用26.0.0时,它们都被挤压了.

菜单项xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/people"
        android:icon="@drawable/icon_addfriends_newsfeed"
        android:title=""
        app:showAsAction="always" />
</menu>
Run Code Online (Sandbox Code Playgroud)

AppCompatActivity中的onCreateOptionsMenu

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.newsfeed, menu);
    return true;
}
Run Code Online (Sandbox Code Playgroud)

工具栏布局

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimaryDark"
        android:theme="@style/ToolbarColoredBackArrow"
        app:popupTheme="@style/AppTheme.PopupOverlay"/>

</android.support.design.widget.AppBarLayout>
Run Code Online (Sandbox Code Playgroud)

25

26.0.0

android android-support-library

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

将文件复制到/ data/local/tmp

我想将一些文件从它自己的数据文件夹(例如"/data/data/com.example.copy/")复制到"/ data/local/tmp /".我无法在我的应用中访问/ data/local/tmp /.有可能吗?我的设备上没有root访问权限.

这是我的代码:

Process p=Runtime.getRuntime().exec("cat "+ this.getApplicationInfo().dataDir +"1.txt > /data/local/tmp/1.txt" );
p.waitFor();
Run Code Online (Sandbox Code Playgroud)

android copy process tmp

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

单击子项时触发的onClick和parent触发

class Sample extends React.Component {
  constructor(props) {
    super(props);

    this.handleChild = this.handleChild.bind(this);
    this.handleParent = this.handleParent.bind(this);
  }

  render() {
    return (
      <div
        style={{width: '100%', height: '500px', background: 'white'}}
        onClick={this.handleParent}>

        <div
          style={{ width: '40px', height: '40px', margin: '0 auto', background: 'black'}}
          onClick={this.handleChild}>
          hello
        </div>

      </div>
    );
  }

  handleParent(e) {
    console.log('parent');
  }

  handleChild(e) {
    console.log('child');
  }
}
Run Code Online (Sandbox Code Playgroud)

单击子项时的输出

child
parent
Run Code Online (Sandbox Code Playgroud)

欲望输出是

child
Run Code Online (Sandbox Code Playgroud)

我的意思是我只想在点击孩子时只触发孩子的onClick.

家长工作正常.单击父级时,它仅触发父级的onClick.我遇到的问题是和孩子在一起.

javascript reactjs

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