我正在尝试在我的应用程序中实现手势,由于某种原因,没有调用onfling().我尝试阅读关于此的大量帖子,并尝试修复我的代码,但它无法正常工作.以下是我的代码.请看一看:
public class MainMenuSlider extends Activity implements OnClickListener{
protected MyGestureListener myGestureListener;
private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
private ViewFlipper vf;
private Animation animFlipInNext,animFlipOutNext, animFlipInPrevious, animFlipOutPrevious;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainmenuslider);
myGestureListener = new MyGestureListener(this);
//vf for viewflipper
vf=(ViewFlipper)findViewById(R.id.ViewFlipper01);
animFlipInNext = AnimationUtils.loadAnimation(this, R.anim.flipinnext);
animFlipOutNext = AnimationUtils.loadAnimation(this, R.anim.flipoutnext);
animFlipInPrevious = AnimationUtils.loadAnimation(this, R.anim.flipinprevious);
animFlipOutPrevious = AnimationUtils.loadAnimation(this, R.anim.flipoutprevious);
imageone = (ImageView) findViewById(R.id.imageone);
imagetwo = (ImageView) findViewById(R.id.imagetwo);
imageone.setOnClickListener(myGestureListener); …Run Code Online (Sandbox Code Playgroud) 我最近开始阅读有关协程的内容,我想询问某个场景。
考虑一个带有一个按钮的简单屏幕。单击后,它会执行一堆打印语句和一些延迟(其间)。到目前为止,我正在使用协程来实现这一目标。
现在,我的问题是,如果用户反复向该按钮发送垃圾邮件,是否有一种方法可以将任务排队并在专用线程上逐个执行(一旦前一个任务执行完毕)?
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
val thread = newSingleThreadContext("thread")
binding.button1.setOnClickListener {
CoroutineScope(thread).launch {
Log.d("ABC", " TEXT1 ")
delay(1000)
Log.d("ABC", " TEXT2 ")
delay(2000)
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我执行此操作,它会正常运行,并且如果我按一次按钮,我就可以看到日志:
TEXT1
TEXT2
Run Code Online (Sandbox Code Playgroud)
但是,如果我向按钮发送垃圾邮件,我会看到以下内容:
TEXT1
TEXT1
TEXT2
TEXT1
TEXT2
TEXT2
Run Code Online (Sandbox Code Playgroud)
基本上,根据我的观察,发生的情况是,当用户按下按钮时,协程就会在没有任何等待或检查的情况下执行。所以,我的问题是,如何编辑代码,以便当用户向按钮发送垃圾邮件时,每个 courotine 都会按顺序执行,并且每个 courotine 在下一个开始执行之前完成,以便输出如下所示:
TEXT1
TEXT2
TEXT1
TEXT2
TEXT1
TEXT2
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Jackson将我的json数据转换为POJO对象.这是MainActivity和我的POJO类代码.我基本上得到一个JsonMappingException错误.我还附上了整个日志.
MainActivity.java:
ObjectMapper mapper = new ObjectMapper();
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
try {
List<Entries> results = mapper.readValue(new URL("http://collegewires.com/android/jacksoncw.json"), new TypeReference<List<Entries>>(){});
for(int i=0;i<results.size();++i){
System.out.println(results.get(i).getName());
out = out + " ## " + results.get(i).getName();
txt.setText("1111");
}
} catch (JsonParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
Entries.java(这是POJO)
package com.collegewires.jackson;
public …Run Code Online (Sandbox Code Playgroud) 我有一个主要用Java编写的项目,但是我正在慢慢转移到Kotlin从事新活动。该项目应用了Dagger2,并且与基于Java的活动一起使用时,可以完美地工作。但是,当我创建Kotlin活动并尝试注入时,出现以下错误。
LoginIDPresenter没有@Inject构造函数或通过@Provides-或-带@Produces注释的方法不能提供。此类型支持成员注入,但不能隐式提供。
void inject(LoginIDActivity loginIDActivity);
com.maxis.mymaxis.ui.logindigitalid.LoginIDPresenter is injected at
com.maxis.mymaxis.ui.logindigitalid.LoginIDActivity.loginIDPresenter
com.maxis.mymaxis.ui.logindigitalid.LoginIDActivity is injected at
com.maxis.mymaxis.injection.component.ActivityComponent.inject(loginIDActivity)
Run Code Online (Sandbox Code Playgroud)
再次重申一下,当我在Java活动中进行注入时,它可以完美地工作。另外,我的Module和Component文件全部使用Java。仅当我创建Kotlin活动并尝试在其中进行注入时,我才会收到错误。
LoginIDPresenter.kt
class LoginIDPresenter : BasePresenter<LoginIDMvpView>() {
lateinit var mContext : Context
@Inject
fun LoginIDPresenter(@ActivityContext context: Context){
mContext = context
}
override fun attachView(loginIDMvpView: LoginIDMvpView) {
super.attachView(loginIDMvpView)
}
override fun detachView() {
super.detachView()
mCompositeSubscription.clear()
}
}
Run Code Online (Sandbox Code Playgroud)
LoginIDActivity.kt
class LoginIDActivity : BaseActivity(), LoginIDMvpView {
@Inject lateinit var loginIDPresenter : LoginIDPresenter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
loginIDPresenter.attachView(this)
}
override …Run Code Online (Sandbox Code Playgroud)