我正在尝试将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) 将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拆箱会导致编译错误
我按照链接的方式,修改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<Integer, Boolean>" />
<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
如何从文件夹中加载html
文件.我不知道如何在函数中添加这些文件的路径.我知道如何从文件夹中加载文件,但这里遇到文件夹的问题.WebView
raw
html
WebView.loadData()
asset
WebView
raw
提前致谢
我正在为我的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
我开发了基于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)
现在编译,但问题是:它是正确的方式?
我正在开发一个具有标签布局作为图像的应用程序.
我想将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
我在我的类上添加注入后得到这个错误然后它给了我一个编译错误.如果我删除
@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) 我用的是下面两种方法(启发/从这里复制)到expand
和collapse
一些TextViews
在ScrollView
通过点击"头" - 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) 我尝试在现有项目中使用数据绑定,但我无法构建它.
在项目中使用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
两个主要问题是:
getVariable("variableName")
会查找变量并返回它,如果不存在具有此名称的变量,则返回null.所以更明确一点:如果我不知道我的ViewDataBinding的类型,是他们获取变量的方法还是我必须知道它的类型?
以下是它的实际工作方式:
<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)
我给它的ViewDataBinding实例充气:
MyLayoutBinding binding = (MyLayoutBinding) DataBindingUtil.inflate(inflater, R.layout.my_layout, root, false);
我可以通过调用适当的方法来获取它的变量:
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 ×10
data-binding ×4
butterknife ×1
dagger-2 ×1
gallery ×1
getimagedata ×1
imageview ×1
java ×1
mvvm ×1
warnings ×1