只是好奇:在Kotlin中,我很想得到一些可以通过懒惰来初始化的val,但是有一个参数.那是因为我需要为了初始化它而创建的东西很晚.
具体来说,我希望我有:
private lateinit val controlObj:SomeView
Run Code Online (Sandbox Code Playgroud)
要么:
private val controlObj:SomeView by lazy { view:View->view.findViewById(...)}
Run Code Online (Sandbox Code Playgroud)
然后:
override fun onCreateView(....) {
val view = inflate(....)
controlObj = view.findViewById(...)
Run Code Online (Sandbox Code Playgroud)
或在第二种情况下controlObj.initWith(view)
或类似的情况:
return view
Run Code Online (Sandbox Code Playgroud)
我无法使用,by lazy
因为by lazy
初始化时不会接受外部参数.在这个例子中 - 包含view
.
当然我有,lateinit var
但如果我能确保它在设置后变为只读,我会在一行中完成它会很好.
是否有一种非常干净的方法来创建只读初始化一次的只读变量,但只有当其他变量出生时?任何init once
关键字?在init之后,编译器知道它是不可变的?
我知道这里存在潜在的并发问题,但如果我敢于在init之前访问它,我当然应该被抛出.
正如标题所说,为什么intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
或intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
不会有效?
我有3个活动让我们说A,B和C.
当我尝试使用代码从C启动活动A时:
Intent i = new Intent(this, A.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
Run Code Online (Sandbox Code Playgroud)
它只是启动活动A但不清除顶部.-_-
我也试过用setFlags()
.
我在这个问题上阅读了关于SO的不同问题,但我找不到正确的答案.> _ <
有人请帮忙!
编辑
@codeMagic请求的活动'A'中onBackPressed()的代码.
@Override
public void onBackPressed(){
if(wvLogin.canGoBack())
wvLogin.goBack();
else
super.onBackPressed();
}
Run Code Online (Sandbox Code Playgroud) 我在我的 Web API 项目中遇到了一段代码,它有一个这样结构的类:
public class QuestionDto
{
public bool disabled {get;set;}
public int id {get;set;}
public int order {get;set;}
public PositionDto pagePosition {get;set;}
public string title {get;set;}
}
public enum PositionDto
{
FullWidth = 0,
Half = 1
}
Run Code Online (Sandbox Code Playgroud)
有一个 API 调用返回QuestionDto
,如下:
[Route("")]
[HttpGet]
[ResponseType(typeof(QuestionDto))]
public async Task<IHttpActionResult> GetCategoryQuestions()
{
return Ok(new QuestionDto { PagePosition = PagePositionDto.Half });
}
Run Code Online (Sandbox Code Playgroud)
这是 Chrome 控制台网络选项卡中的一个片段,显示了此 API 调用的响应:
枚举如何返回它的文本值,而不是它的 int 值?
为了进一步混淆这一点,如果我然后采用相同的类结构并将其复制并粘贴到不同的项目,则返回此对象的 api 调用将返回 int 值 - 这正是我所期望的。
那么第一个项目可以返回字符串值吗?
是否有一些设置可以使此枚举返回其字符串值?
问题:我使用std :: exception和std :: bad_alloc来捕获异常.我正在使用的try catch的顺序有问题.我附上了示例代码以供参考.
预期:如果我的错误是bad_alloc,则抛出bad_alloc异常.
观察:我的错误是bad_alloc,但抛出了异常.
示例代码:
#include "stdafx.h"
#include <iostream>
#include <exception>
using namespace std;
void goesWrong()
{
bool error1Detected = true;
bool error2Detected = false;
if (error1Detected)
{
throw bad_alloc();
}
if (error2Detected)
{
throw exception();
}
}
int main()
{
try
{
goesWrong();
}
catch (exception &e)
{
cout << "Catching exception: " << e.what() << endl;
}
catch (bad_alloc &e)
{
cout << "Catching bad_alloc: " << e.what() << endl; …
Run Code Online (Sandbox Code Playgroud) 我正在创建一个具有ProfilePage的应用程序,其中包含三个片段 - 关于| 帖子| 画廊,我正在使用带有用户图像的可折叠工具栏.我的第二个和第三个片段将有一个应始终可见的页脚,但这是我得到的:
当我的图像被展开时,页脚会消失.我想要的是我的两个片段让这些页脚始终可见,而不是依赖于工具栏是否折叠.我的画廊页脚应该类似于帖子页脚.
profile_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="256dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
contentScrim="?attr/colorPrimary"
android:layout_height="match_parent"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<ImageView
android:id="@+id/profile_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
android:contentDescription="@string/profile_photo"
app:layout_collapseMode="none"/>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin">
<ImageView
android:id="@+id/toolbarEdit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:contentDescription="@string/block"
android:paddingEnd="20dp"
android:paddingStart="5dp"
app:srcCompat="@drawable/ic_icon_edit" />
</android.support.v7.widget.Toolbar>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<android.support.design.widget.TabLayout
android:id="@+id/myProfileTabs"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_gravity="bottom"
app:tabContentStart="72dp"
app:tabGravity="fill"
app:tabMode="scrollable" />
<android.support.v4.view.ViewPager
android:id="@+id/myProfileViewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
posts_fragment.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" …
Run Code Online (Sandbox Code Playgroud) xml android android-fragments android-coordinatorlayout android-collapsingtoolbarlayout
我想做一个类似提醒应用程序的东西.我想允许用户选择现在不是的日期和时间(至少从现在起5分钟),我还想禁止用户选择距离太远的日期 - 例如30天.我创建了datePicker和timePicker,使它们在按钮点击时弹出,但找不到设置最小值和最大值的方法.
public void showDateDialog() {
btnDate = (Button) findViewById(R.id.buttonDate);
btnDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(DATE_DIALOG_ID);
}
});
}
public void showTimeDialog() {
btnTime = (Button) findViewById(R.id.buttonTime);
btnTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDialog(TIME_DIALOG_ID);
}
});
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
// create a new DatePickerDialog with values you want to show
return new DatePickerDialog(this, datePickerListener, yearSet, monthSet, daySet);
// create a new TimePickerDialog with …
Run Code Online (Sandbox Code Playgroud) 我有错误
从源 ' http://localhost:3000 '获取在 ' http://localhost:5000/admin/authenticate '的访问已被 CORS 策略阻止:没有 'Access-Control-Allow-Origin' 标头存在于请求的资源。如果不透明响应满足您的需求,请将请求的模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。
我的 ApiManager
function login(username, password) {
const requestOptions = {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*' },
body: JSON.stringify({ username, password })};
return fetch(`http://localhost:5000/admin/authenticate`, requestOptions)
.then(handleResponse)
.then(user => {
// store user details and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('user', JSON.stringify(user));
return user;
}
);
}
Run Code Online (Sandbox Code Playgroud)
在后端 Asp.Net Core 2.2 (Startup.cs) 中,我写道:
services.AddCors(options => …
Run Code Online (Sandbox Code Playgroud) 我在这里找到了这个矢量可绘制资源.我想要做的是翻转它,使X在另一边.
我设法在布局中执行此操作,就像在此示例中添加:
android:scaleX="-1"
到我的ImageView并且它可以工作.
现在我想直接在Vector Drawable中更改它,但是当我尝试下面的代码时它是不可见的.
account_remove.xml:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24"
android:viewportWidth="24">
<group
android:name="rotationGroup"
android:scaleX="-1" >
<path
android:fillColor="#FFFFFF"
android:pathData="M15,14C17.67,14 23,15.33 23,18V20H7V18C7,15.33 12.33,14 15,14M15,12A4,4 0 0,1 11,8A4,4 0 0,1 15,4A4,4 0 0,1 19,8A4,4 0 0,1 15,12M5,9.59L7.12,7.46L8.54,8.88L6.41,11L8.54,13.12L7.12,14.54L5,12.41L2.88,14.54L1.46,13.12L3.59,11L1.46,8.88L2.88,7.46L5,9.59Z" />
</group>
</vector>
Run Code Online (Sandbox Code Playgroud)
当我添加:
android:pivotX="10.0"
android:pivotY="10.0"
Run Code Online (Sandbox Code Playgroud)
到我的rotationGroup,它向右倾斜.
我应该将哪些值添加到我的rotationGroup以使其正常工作?
xml android drawable android-drawable android-vectordrawable
我从该网站添加了一个用户svg图像。图像应该清晰,但是当我在应用程序中将其用作默认用户图像时,图像非常模糊。
<!-- Thumbnail Image -->
<com.android.volley.toolbox.NetworkImageView
android:id="@+id/thumbnail"
android:background="@drawable/ic_icon_user"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_alignParentLeft="true"
android:layout_marginRight="8dp" />
Run Code Online (Sandbox Code Playgroud)
另外我将如何在android中编辑svg图像颜色。我尝试添加自定义颜色,但是没有用。
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24"
android:viewportWidth="24">
<path
android:fillColor="@color/ColorRed"
android:pathData="M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z" />
</vector>
Run Code Online (Sandbox Code Playgroud) Android Studio中的参考ID错误。它表明此方法已经查找了id。我给了与代码中使用的ID名称相同的名称,但是它不起作用。我已经尝试过链接ID并重用它,但是它显示了相同的错误。请需要帮助。错误消息图像在超级链接中。
这是我的代码
public class SignUp extends AppCompatActivity implements View.OnClickListener {
Button btnSignup;
TextView btnLogin,btnForgotPass;
EditText input_email,input_pass;
RelativeLayout activity_sign_up;
private FirebaseAuth auth;
Snackbar snackbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sign_up);
//View
btnSignup = (Button)findViewById(R.id.signup_btn_register);
btnLogin = (TextView)findViewById(R.id.signup_btn_login);
btnForgotPass = (TextView)findViewById(R.id.signup_btn_forgot_pass);
input_email = (EditText)findViewById(R.id.signup_email);
input_pass = (EditText)findViewById(R.id.signup_password);
activity_sign_up = (RelativeLayout)findViewById(R.id.activity_sign_up);
}
}
Run Code Online (Sandbox Code Playgroud) android ×7
c# ×2
java ×2
xml ×2
android-collapsingtoolbarlayout ×1
android-xml ×1
api ×1
asp.net ×1
c++ ×1
datepicker ×1
drawable ×1
enums ×1
exception ×1
immutability ×1
javascript ×1
kotlin ×1
reactjs ×1
svg ×1
timepicker ×1
vector ×1