小编yen*_*rah的帖子

Android将图像从库中获取到ImageView中

我正在尝试将galery中的照片添加到a ImageView但是我收到此错误:

java.lang.RuntimeException:将结果ResultInfo {who = null,request = 1,result = -1,data = Intent {dat = content:// media/external/images/media/1}}传递给activity {hotMetter. pack/hotMetter.pack.GetPhoto}:java.lang.NullPointerException

这是我的代码:

      Intent intent = new Intent();
      intent.setType("image/*");
      intent.setAction(Intent.ACTION_GET_CONTENT);

      startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE);
}
Bitmap bitmap=null;
public void onActivityResult(int requestCode, int resultCode, Intent data)
{

    if (resultCode == Activity.RESULT_OK)
    {
        if (requestCode == SELECT_PICTURE) 
        {
             Uri selectedImageUri = data.getData();           
             selectedImagePath = getPath(selectedImageUri);             
             tv.setText(selectedImagePath);
             img.setImageURI(selectedImageUri); 
         }
    }


 public String getPath(Uri uri) 
    {
        String[] projection = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(uri, projection, null, …
Run Code Online (Sandbox Code Playgroud)

android gallery image-gallery getimagedata imageview

53
推荐指数
5
解决办法
15万
查看次数

数据绑定 - safeUnbox警告

将AS gradle版本升级到2.3.0后,数据绑定会遇到警告:

警告:selectMap [index]是一个盒装字段但需要取消装箱才能执行selectMap [index]?@android:颜色/白色:@android:颜色/透明.这可能会导致NPE,因此数据绑定将安全地取消它.您可以更改表达式并使用safeUnbox()显式地包装selectMap [index]以防止出现警告

selectMap是一个ObservableMap,然后我搜索这个警告,但只进行了一些讨论而没有修复它

Android Studio 2.3.0-alpha1:Databinding + int拆箱会导致编译错误

数据绑定 - API 15-18上的数据对象为空

我按照链接的方式,修改selectMap[index]safeUnbox(selectMap[index])但语法错误.

所以任何人都知道如何修复此警告?


编辑:这是xml文件代码

<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)

<data class="SupportCountryViewHolderBinding">

    <variable
        name="viewModel"
        type="com.goodarc.care_about.activity.account.support_country.SupportCountryHolderViewModel" />

    <variable
        name="dataSource"
        type="com.goodarc.care_about.module.assets_file.SupportCountry" />

    <variable
        name="selectMap"
        type="android.databinding.ObservableMap&lt;Integer, Boolean&gt;" />

    <variable
        name="index"
        type="int" />
</data>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@{selectMap[index] ? @android:color/white : @android:color/transparent}"
    android:onClick="@{(v) -> viewModel.onItemSelectListener(selectMap, index)}"
    android:orientation="vertical"
    android:padding="20dp">

    <TextView
        style="@style/TitleLabel2"
        android:layout_gravity="center_vertical|start"
        android:text="@{dataSource.display}"
        android:textColor="@{selectMap[index] ? @android:color/black : @android:color/white}"
        tools:text="Taiwan (+886)" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

构建成功,但警告出来(我在上面).

data-binding android warnings android-gradle-plugin android-databinding

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

在Web视图中从原始文件夹加载html文件

如何从文件夹中加载html文件.我不知道如何在函数中添加这些文件的路径.我知道如何从文件夹中加载文件,但这里遇到文件夹的问题.WebViewrawhtmlWebView.loadData()assetWebViewraw

提前致谢

android android-webview

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

"错误:无法生成视图绑定器java.lang.NullPointerException"的可能原因

我正在为我的Android项目使用Android Studio.当构建与奇怪的堆栈跟踪崩溃时,我遇到了一个问题,如下所示:

Error:Execution failed for task ':app:compileDevDebugJavaWithJavac'.
 java.lang.RuntimeException: failure, see logs for details.
  cannot generate view binders java.lang.NullPointerException
    at android.databinding.tool.reflection.ModelMethod.isBoxingConversion(ModelMethod.java:155)
    at android.databinding.tool.store.SetterStore.isBetterParameter(SetterStore.java:946)
    at android.databinding.tool.store.SetterStore.getBestSetter(SetterStore.java:838)
Run Code Online (Sandbox Code Playgroud)

似乎数据绑定整体被破坏了.

我之前进行了重构,并在包之间移动了类.

java data-binding android nullpointerexception android-databinding

20
推荐指数
5
解决办法
7853
查看次数

如何将架构组件与Android上的数据绑定相结合?

我开发了基于android数据绑定库的应用程序:https://developer.android.com/topic/libraries/data-binding/index.html

class SignInViewModel extends BaseObservable {

    @Bindable
    public String getLogin() {
        return login;
    }

    @Bindable
    public String getPassword() {
        return password;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想使用新库中的ViewModelProviders:https: //developer.android.com/topic/libraries/architecture/guide.html

SignInViewModel signInViewModel = ViewModelProviders.of(this).get(SignInViewModel.class);
Run Code Online (Sandbox Code Playgroud)

它如何结合?任何的想法?或者应该结合这两个库?

编辑

我改为:

class SignInViewModel extends ViewModel {
   public ObservableField<String> login = new ObservableField<>("");

    public ObservableField<String> password = new ObservableField<>("");
}
Run Code Online (Sandbox Code Playgroud)

现在编译,但问题是:它是正确的方式?

data-binding android android-databinding

15
推荐指数
2
解决办法
5364
查看次数

在MVVM体系结构中使用Tab布局和数据绑定库

我正在开发一个具有标签布局作为图像的应用程序.

在此输入图像描述

我想将MVVM架构与数据绑定库一起使用,但我是这个框架的新手.

我可以通过使用ViewPager作为此示例的常规设置选项卡布局而不使用MVVM来执行此操作.

没有MVVM和数据绑定的常规选项卡布局:

activity_main.xml中:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|enterAlways"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

    <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabMode="fixed"
        app:tabGravity="fill"/>
</android.support.design.widget.AppBarLayout>

<android.support.v4.view.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"  />
Run Code Online (Sandbox Code Playgroud)

MainActivity.java:

public class MainActivity extends AppCompatActivity {

private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    viewPager = (ViewPager) findViewById(R.id.viewpager);
    setupViewPager(viewPager);

    tabLayout = (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);
}

private void setupViewPager(ViewPager viewPager) …
Run Code Online (Sandbox Code Playgroud)

data-binding android mvvm android-tablayout android-databinding

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

找不到符号类DaggerAppComponent或找不到符号类DaggerActivityComponent

我在我的类上添加注入后得到这个错误然后它给了我一个编译错误.如果我删除

@Inject static ApiService mApiService;
Run Code Online (Sandbox Code Playgroud)

它工作正常

我正在使用2个应用程序类扩展MultidexApplication因为我有合并2应用程序首先使用dagger2而第二个应用程序是butterknife并且两个目录结构都是不同的并且两个应用程序相互依赖正常工作但合并后代码应用程序无法编译并给出DaggerAppComponent错误!

请帮我们解决我的疑问

我遵循以下结构


@ActivityScope
@Component(dependencies = AppComponent.class)
public interface ActivityComponent extends AppComponent {
    void inject(SignInActivity activity);
}
Run Code Online (Sandbox Code Playgroud)
@Singleton
@Component(modules = {ApplicationModule.class, ApiModule.class})
public interface AppComponent {
    Context appContext();
    Config config();
    ApiService apiService();    
}
Run Code Online (Sandbox Code Playgroud)
@Module
public class ActivityModule {
    private final Activity mActivity;

    public ActivityModule(Activity activity){
        mActivity = activity;
    }

    @Provides
    public Context activityContext(){
        return mActivity;
    }
}
Run Code Online (Sandbox Code Playgroud)
@Module
public class ApiModule {
    @Provides
    @Singleton
    public ApiService apiService(){
        OkHttpClient client = new OkHttpClient().newBuilder()
                .connectTimeout(10, TimeUnit.SECONDS) …
Run Code Online (Sandbox Code Playgroud)

android compiler-errors butterknife dagger-2

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

展开/折叠动画:小滞后|| MeasureSpec返回错误的值

我用的是下面两种方法(启发/从这里复制)到expandcollapse一些TextViewsScrollView通过点击"头" - TextView.

伪布局结构:

<ScrollView>
    <LinearLayout>
        <LinearLayout>
            <!-- some other stuff here -->
        </LinearLayout>
        <TextView "header1"/>
        <View "fancydivider"/>
        <TextView "content1">
        <TextView "header2"/>
        <View "fancydivider"/>
        <TextView "content2">
    </LinearLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)

分频器很简单View,height设置为1dp.内容TextViews风格包括:

    <item name="android:layout_height">0dp</item>
    <item name="android:layout_width">match_parent</item>
Run Code Online (Sandbox Code Playgroud)

和一些边距和填充.

方法在这里:

public static void expand(final View v) {

    //v.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

    int matchParentMeasureSpec = View.MeasureSpec.makeMeasureSpec(((View) v.getParent()).getWidth(), View.MeasureSpec.EXACTLY);
    int wrapContentMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
    v.measure(matchParentMeasureSpec, wrapContentMeasureSpec);

    final int targetHeight = …
Run Code Online (Sandbox Code Playgroud)

android android-animation

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

数据绑定:找不到符号类BR

我尝试在现有项目中使用数据绑定,但我无法构建它.

在项目中使用build.gradle:

dependencies {
    classpath 'com.android.tools.build:gradle:1.3.1'
    //Data Binding Beta
    classpath "com.android.databinding:dataBinder:1.0-rc4"

    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.7+'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}
Run Code Online (Sandbox Code Playgroud)

应用

apply plugin: 'com.android.databinding'
apply plugin: 'com.neenbedankt.android-apt'`
Run Code Online (Sandbox Code Playgroud)

在模块中:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    apt 'com.android.databinding:compiler:1.0-rc1+'
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用数据绑定与RecyclerView/Fragment/ViewHolder/Adapter ..我使用Android Studio 1.4.1.使用compileSdkVersion 23和buildToolsVersion"23.0.1".我尝试了没有apt,不同的gradle版本,证明读取我的classes/xml ..我还使用Butterknife(因为我的项目太大而不能一次更改所有内容)和其他(但不相关)库.我同步并重建了我的项目,我关闭/打开了Android Studio,我试图使缓存无效.我从一开始就构建了一个"新鲜"的例子.

我的"数据类"中的getter方法是@Bindable.

此外,未创建数据绑定包.(错误消息说它不存在)和Error:cannot generate view binders java.lang.StringIndexOutOfBoundsException: String index out of range: -21

android android-databinding

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

ViewDataBinding getVariable?

两个主要问题是:

  • 为什么ViewDataBinding没有这样的方法getVariable("variableName")会查找变量并返回它,如果不存在具有此名称的变量,则返回null.
  • 他们以任何方式/解决方法来实现这种行为吗?

所以更明确一点:如果我不知道我的ViewDataBinding的类型,是他们获取变量的方法还是我必须知道它的类型?


以下是它的实际工作方式:

  1. 我有一个名为my_layout.xml的布局:
<layout>
    <data>
        <variable
            android:name="myVaribale"
            android:type="String"/>
        </variable>
    </data>

    <RelativeLayout
        android:id="@+id/root_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="@{myVariable}"/>

    </RelativeLayout>
<layout>
Run Code Online (Sandbox Code Playgroud)
  1. 我给它的ViewDataBinding实例充气:

    MyLayoutBinding binding = (MyLayoutBinding) DataBindingUtil.inflate(inflater, R.layout.my_layout, root, false);  

  2. 我可以通过调用适当的方法来获取它的变量:

    String myVariable = binding.getMyVariable(); 

因此,这是如何让一个变量时,我们知道是什么类型的的ViewDataBinding.


我的问题在这里:

让我们想象一下我有3个布局叫my_layout_1,my_layout_2,my_layout_3和那些3个布局被包围<layout>标记.这3个布局也有相同的变量(myVariable).

所以这里是布局:

my_layout_1

<layout>

    <data>
        <variable
            android:name="myVariable"
            android:type="String"/>
        </variable>
    </data>

    <RelativeLayout
        android:id="@+id/root_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent" …
Run Code Online (Sandbox Code Playgroud)

android android-databinding

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