我正在使用AutoValue扩展来生成我的Parcelable Android类.文档明确指出一个@AutoValue不能扩展另一个:https: //github.com/google/auto/blob/master/value/userguide/howto.md#inherit
另一位开发人员正在帮我解决这个问题,并建议"如果你有共同的字段,你可以将它们放在两个实现都实现的接口中." 我假设这意味着图书馆更喜欢构图而不是继承.
我承认,我有点迷茫.如果有人可以提供一个简单的"子类化"AutoValue类的简单方法的例子,那将是值得赞赏的.这是一个简单的类:
@AutoParcelGson
public abstract class User implements Parcelable {
public abstract String username();
public static User create(String username) {
return builder().username(username).build();
}
public static Builder builder() {
return new AutoParcelGson_User.Builder();
}
@AutoParcelGson.Builder
public interface Builder {
Builder username(String username);
User build();
}
}
Run Code Online (Sandbox Code Playgroud)
我想要另一个名为Customer的@AutoValue类,它有一些额外的字段.此外,@ AutoParcelGson是我正在使用的@AutoValue扩展,但它是相同的行为.
Angular 5.0.1
我正在查看Angular HttpClient的文档:https://angular.io/guide/http,但我似乎无法想象如何将POST参数作为URLEncoded字符串而不是JSON字符串发送.例如,我的Java http客户端将默认发送如下:
username=test%40test.com&password=Password1&rolename=Admin
Run Code Online (Sandbox Code Playgroud)
但是Angular希望默认发送为Json:
{"username":"test@test.com","password":"Password1","rolename":"Admin"}
Run Code Online (Sandbox Code Playgroud)
这是我目前的代码:
let body = {
username: "test@test.com",
password: "Password1",
rolename: "Admin"
};
let headers = new HttpHeaders();
headers = headers.set("Content-Type", "application/x-www-form-urlencoded");
this.http.post(this.baseUrl, body, {
headers: headers,
})
.subscribe(resp => {
console.log("response %o, ", resp);
});
Run Code Online (Sandbox Code Playgroud)
我也试过添加HttpParams:
let httpParams = new HttpParams();
httpParams.append("username", "test@test.com");
httpParams.append("password", "Password1");
httpParams.append("rolename", "Admin");
...
headers: headers,
params: httpParams
Run Code Online (Sandbox Code Playgroud)
但HttpParams似乎没有任何效果.
知道如何对请求进行URL编码而不是Json吗?
我已经在其他帖子上看到了类似的解决方案,但我一直在将问题应用于我的具体问题.
这是我最初的加入:
SELECT service_note_task, comment_id, comment FROM service_note_task LEFT JOIN service_note_task_comments ON service_note_task.service_note_task_id = service_note_task_comments.service_note_task_id;
Run Code Online (Sandbox Code Playgroud)
结果如下:
+-----------------------------+------------+--------------+
| service_note_task | comment_id | comment |
+-----------------------------+------------+--------------+
| This is service note task 3 | 25 | Comment |
| This is service note task 3 | 26 | Comment Blah |
| This is service note task 3 | 36 | aaa |
| This is service note task 2 | 13 | Awesome comm |
| This is service note …
Run Code Online (Sandbox Code Playgroud) 在模拟器或设备上运行我的 Ionic 4 应用程序时,我似乎在使用配置标志和 livereload 标志时遇到问题。我根据此处的文档设置我的环境:https : //ionicframework.com/docs/cli/commands/cordova-run
和这里:
https://ionicframework.com/docs/appflow/quickstart/environment
此 cli 命令将正确设置环境:
ionic cordova emulate android --configuration=qa
Run Code Online (Sandbox Code Playgroud)
这将正确运行 livereload:
ionic cordova emulate android --livereload
Run Code Online (Sandbox Code Playgroud)
但是当我尝试组合标志时:
ionic cordova emulate android --livereload --configuration=qa
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:数据路径“”不应该有额外的属性(浏览器目标)。
如果有帮助,这是我的离子信息,任何见解将不胜感激:
Ionic:
Ionic CLI : 5.4.2
Ionic Framework : @ionic/angular 4.11.0
@angular-devkit/build-angular : 0.801.3
@angular-devkit/schematics : 8.1.3
@angular/cli : 8.1.3
@ionic/angular-toolkit : 2.0.0
Cordova:
Cordova CLI : 9.0.0 (cordova-lib@9.0.1)
Cordova Platforms : android 8.1.0, ios 5.0.1
Cordova Plugins : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 4.1.2, (and 20 other …
Run Code Online (Sandbox Code Playgroud) 好吧,我一直在尝试在Windows 7 x64机器上安装Rmagick.我已经查看了Stack Overflow和其他网站上的每一个教程,但无论我遵循哪个教程,我都会收到"无效的驱动器规范"错误.我的环境来自http://railsinstaller.org/.有没有人最近成功安装了Rmagick,可以指出我正确的方向?谢谢,这让我发疯,但我真的必须让它发挥作用.
我在自定义ParseUser对象中有一个名为Approved的自定义布尔字段.我们通过网络应用将此字段从false更改为true.根据文档,我应该能够在使用fetchInBackground()更改标志后更新currentUser,如下所示:
ParseUser.getCurrentUser().fetchInBackground(new GetCallback<ParseObject>() {
@Override
public void done(ParseObject parseObject, ParseException e) {
Log.v("qwer", "fetched User: " + ((CustomUser)parseObject).isApproved());
}
});
Run Code Online (Sandbox Code Playgroud)
但即使已批准的标志已设置为true,从服务器返回的结果始终为false.除非我注销并再次登录,否则currentUser和相应的字段将与服务器同步.
为什么fetchInBackground()不能为本地用户工作,如果我错误地使用它,我该如何更新currentUser.
我试图稍微调整所选项目在微调器中的位置.不是下拉列表项,因为我已经在我的适配器中有一个自定义视图,但具体是所选项.
正如您在屏幕截图中看到的,"Any"是当前选定的项目.但它在容器内奇怪地对齐,因为它必须容纳下拉列表中最长的字符串,即"Dark Purple Burnt Sienna"(或其他).我想将所选文本对齐到右边,以便"Any"位于下拉指示符旁边,而不是在中间输出.
我试图调整我的自定义微调器项视图,但它对所选项没有任何影响.
我还尝试在Spinner本身上设置重力和文本对齐,但它没有效果.
这是图像和xml:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/default_black"
android:layout_centerVertical="true"
android:text="Color" />
<Spinner
android:id="@+id/spn_color"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
编辑:这是我的适配器:
public class ColorsAdapter<T> implements SpinnerAdapter {
ArrayList<String> mColors;
ArrayList<Integer> mValues;
Context mContext;
public ColorsAdapter(ArrayList<String> colors, ArrayList<Integer> values,
Context context) {
mContext = context;
mColors = colors;
mValues = values;
}
@Override
public int getCount() {
return mColors.size();
}
@Override
public Object getItem(int position) {
return mColors.get(position);
}
@Override
public long getItemId(int position) …
Run Code Online (Sandbox Code Playgroud) 无论我是否尝试使用onCreate(),onCreateView()或onResume(),我似乎都在更新我在ViewPager中使用的片段时出现问题.以下是我在MainFragment中设置ViewPager的方法:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main_screen, container, false);
mPager = (ViewPager)rootView.findViewById(R.id.pager);
mPager.setOffscreenPageLimit(2); // So all 3 pages are loaded at once.
mAdapter = new JournalPagerAdapter(getActivity().getSupportFragmentManager(), this);
mPager.setAdapter(mAdapter);
// Add bar graph to view
mGraphLayout = (LinearLayout) rootView.findViewById(R.id.journalGraph);
updateGraph();
mGraphLayout.addView(mGraphView);
mPainFrag = (PainFragment)mAdapter.getRegisteredFragment(0);
// Null pointer here, but if I put the action in a button listener, it works.
mPainFrag.setScale(mEntry.getPain());
...
Run Code Online (Sandbox Code Playgroud)
我通过FragmentPagerAdapter中的一些重写方法访问片段:
public class JournalPagerAdapter extends FragmentPagerAdapter {
SparseArray<Fragment> registeredFragments = new SparseArray<Fragment>(); …
Run Code Online (Sandbox Code Playgroud) 使用 Cordova 构建 Android 项目时,在 Android Studio 中打开时收到以下消息:
我的 build.gradle 文件反映了插件差异(尽管定义的 Gradle 版本是正确的):
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以配置 Cordova 来显式定义 Android Gradle 插件版本。
我正在尝试通过 Firebase App Distribution 分发 Android 应用程序包。我正在关注此处的文档:https ://support.google.com/firebase/answer/6392038?authuser=1
然而,我似乎陷入了“如何链接”部分,因为 Google Play 集成卡告诉我“缺少所需的权限”。
我相信我满足链接的先决条件:
不确定还需要什么,或者我是否遗漏了一些东西。任何帮助,将不胜感激。