在Android Studio中,布局编辑器无法在xml中预览自定义视图.
很简单的例子:
public class MyCustomView extends FrameLayout {
public MyCustomView(Context context) {
super(context);
}
public MyCustomView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyCustomView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
}
Run Code Online (Sandbox Code Playgroud)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<com.myprojectxxx.view.MyCustomView
android:layout_width="48dp"
android:layout_height="48dp" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
Android Studio总是说,
渲染问题
找不到以下类:
- com.myprojectxxx.view.MyCustomView(修复构建路径,创建类)
提示:尝试构建项目
当然,我有那门课.如果我单击"创建类",它会抱怨同一个类已经存在.如果我重建该项目,没有任何改变.
而且,是的,该项目在我的Android设备上运行良好.此外,它在Eclipse ADT中呈现得非常好.但是,在Android Studio中,它总是说"CLASSES可能无法找到".
Android Studio无法使用自定义视图预览xml文件?这有什么问题?
java android android-custom-view android-layout android-studio
我想通过调用从另一个Activity(FIRST Activity)开始一个Activity(SECOND Activity)startActivity(intent).在我真正做到之前,我发现有人说生命周期方法按以下顺序调用:
FIRST Activity onCreate
FIRST Activity onStart
FIRST Activity onResume
FIRST Activity onPause
SECOND Activity onCreate
SECOND Activity onStart
SECOND Activity onResume
FIRST Activity onStop
Run Code Online (Sandbox Code Playgroud)
在SECOND Activity onResume之前总是叫FIRST Acitivity onStop?我想
FIRST Activity onPause
FIRST Activity onStop
SECOND Activity onCreate
SECOND Activity onStart
SECOND Activity onResume
Run Code Online (Sandbox Code Playgroud)
将被召唤,但似乎没有.
另外,如果我只是在两个活动之间切换,
FIRST Activity onPause
SECOND Activity onRestart
SECOND Activity onStart
SECOND Activity onResume
FIRST Activity onStop
Run Code Online (Sandbox Code Playgroud)
方法总是按此顺序调用吗?
在Java中,\'表示单引号(单引号)字符,并\"表示双引号(双引号)字符.
所以,String s = "I\'m a human.";效果很好.
但是,String s = "I'm a human."也不会产生任何编译错误.
同样,char c = '\"';工作,但char c = '"';也有效.
在Java中,哪个更好用?在HTML或CSS中,style="font-family:'Arial Unicode MS';"更常见的事情(对于这样的标签,我认为这是使用引号的唯一方法),但在Java中,我通常看到人们使用转义字符,如"I\'m a human."
最简单的方法:
String[] namesOfDays = new String[7] {
"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"
};
Run Code Online (Sandbox Code Playgroud)
此方法不使用Locale.因此,如果系统的语言不是英语,则此方法无法正常工作.
使用Joda时间,我们可以这样做:
String[] namesOfDays = new String[7];
LocalDate now = new LocalDate();
for (int i=0; i<7; i++) {
/* DateTimeConstants.MONDAY = 1, TUESDAY = 2, ..., SUNDAY = 7 */
namesOfDays[i] = now.withDayOfWeek((DateTimeConstants.SUNDAY + i - 1) % 7 + 1)
.dayOfWeek().getAsShortText();
}
Run Code Online (Sandbox Code Playgroud)
但是,此方法使用今天的日期和日历计算,这对于最终目的而言是无用的.而且,它有点复杂.
是否有一个简单的方法来得到这样的字符串"Sun","Mon",...,"Sat"用系统的默认语言环境?
请考虑以下代码:
object SomeObjectA {
object SomeObjectB {
val a = "test"
}
}
val X = SomeObjectA
typealias Y = SomeObjectA
SomeObjectA.SomeObjectB // works
X.SomeObjectB // error
Y.SomeObjectB // error
Run Code Online (Sandbox Code Playgroud)
我不能引用使用val或typealias引用外部对象的嵌套对象(在外部对象中).为什么?
在scaladoc中scala.Any,解释了运算符==(或方法==):
该表达式
x == that相当于if (x eq null) that eq null else x.equals(that)http://www.scala-lang.org/api/current/#scala.Any
对于子类的对象AnyRef,我可以很容易地理解它,我没有看到任何奇怪的东西.
然而,对于值AnyVal,(我的意思是Int,Double,Long,等,)上面的定义是有点棘手(1 eq null?如果我们不转变这并不编译1到java.lang.Integer中).此外,==和equals()不同的表现.
我举几个例子.
scala> 1 == 1 res0: Boolean = true scala> 1 == 1.0 res1: Boolean = true scala> 1 == 1.2 res2: Boolean = false scala> 2 == BigInt(2) res3: Boolean = true scala> 2.0 == …
假设class A有一个类型为的成员class B,并且class B有一个类型为的成员class A.
在Scala或Kotlin中,您可以按任何顺序定义类,而不必担心在这种情况下,因为第一个定义的类可以像往常一样使用第二个定义的类,即使在case/data类中也是如此.
但是在Python中,以下代码
class A:
b = B()
class B:
a = A()
Run Code Online (Sandbox Code Playgroud)
抛出编译错误,因为class B在定义时class A未定义.
你可以解决这个简单的案例,就像在这个答案中一样
class A:
pass
class B:
a = A()
A.b = B()
Run Code Online (Sandbox Code Playgroud)
但是,这种方式对Python中的数据类不起作用,因为在定义数据类之后分配成员不会更新数据类的自动生成方法,这使得"数据类"的使用变得无用.
@dataclass
class A:
b: B # or `b: Optional[B]`
@dataclass
class B:
a: A # or `a: Optional[A]`
Run Code Online (Sandbox Code Playgroud)
我该如何避免这个问题?
我在布局中有两个视图.我会打电话给他们View A,并View B分别.
????????
????????
??A??B??
????????
????????
Run Code Online (Sandbox Code Playgroud)
父布局的高度(包括View A和View B)是WRAP_CONTENT.
这里的高度View B是WRAP_CONTENT.也就是说,其高度可以根据其内容而改变.
我想做的是
View A高度设置为View B高度.View AView BView A如果View A内容高于内容,则将高度设置为自己内容的高度View B.所以,
①如果含量View B较高,则将View A高度设置为View B高度.
???????? ????????
???????? ????????
?? ?? ?? ??A?? ??
I want ??A??B??, not ?????B??.
?? ?? ?? ? ? ??
???????? …Run Code Online (Sandbox Code Playgroud) 我CharArray的内容是如下字符:
val chars = arrayOf('A', 'B', 'C')
Run Code Online (Sandbox Code Playgroud)
要么
val chars = "ABC".toCharArray()
Run Code Online (Sandbox Code Playgroud)
我想从中获取字符串"ABC".我该怎么做?
chars.toString()不起作用; 它就好像chars是一个普通的整数数组.
我有一个绑定的服务.活动正在绑定它.它取消了Service on Activity的onStop()方法.
问题是,如果Activity发生了运行时更改(例如,方向更改),则会重新创建Activity.因此,onStop()从Activity调用方法,并且Activity在该方法中取消绑定服务,这导致服务的破坏(并重新启动它).
我希望保持Service不会在运行时更改中被销毁,同时在Activity不可见时保持Service停止.你可以说尝试startService()但是当Activity不可见时它会使服务停止.如果我添加stopService Activity onStop(),那么结果与bindService()和相同unbindService().
推迟unbindService()在Acitivity中onStop()可以部分地解决这个问题,但延迟时间将是任意的,这会阻止Activity在一段时间内获得GC.我想要一个更清晰的解决方案.
我不想要解决方案,android:configChanges="orientation"因为还有其他运行时更改,并且它是处理运行时更改的沮丧方式.
简而言之,我希望服务就像一个叫做片段的片段setRetainInstance(true).但是,片段没有类似的东西bindService().我该怎么办?