Java 按钮触发功能和意图同时出现。安卓
所以我对android和java还不熟悉,我知道我应该在活动之间有目的地移动Java 按钮触发功能和意图同时出现。安卓,java,android,function,android-studio,android-intent,Java,Android,Function,Android Studio,Android Intent,所以我对android和java还不熟悉,我知道我应该在活动之间有目的地移动 Intent randomintent = new Intent(profile.this, loggedactivity.class); randomintent .putString("name", namestring); startActivity(randomintent); 问题是,我还有一个函数,我希望它在这个意图将用户带到另一个活动之前被执行。所以我的代码看起来像这样 btnUpload.setOnC
Intent randomintent = new Intent(profile.this, loggedactivity.class);
randomintent .putString("name", namestring);
startActivity(randomintent);
问题是,我还有一个函数,我希望它在这个意图将用户带到另一个活动之前被执行。所以我的代码看起来像这样
btnUpload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
uploadImage();
//this uploads the image, it works without the intent i added
infosendstuff();
//this should be executed after the image is uploaded and stores the image link to a database (also works)
Intent randomintent = new Intent(profile.this, loggedactivity.class);
randomintent .putString("name", namestring);
startActivity(randomintent);
}
});
问题似乎在于,当使用时,它忽略了它上面的另外两个功能,即上传图片和存储该图片的链接。
目标是上传图片,一旦完成,获取链接,通过意图(使用捆绑包)将链接发送到另一个活动,仅此而已 似乎
uploadImage()
方法在网络上做了一些事情,由于网络请求和响应是在另一个线程中完成的,因此代码将继续执行,并且在uploadImage()
方法完成之前,日志数据活动将显示出来
因此,一种方法是强制主线程等待网络线程,在网络线程完成后,主线程继续工作,但这会导致UI线程冻结
另一种方法是,您应该使用回调,当uploadImage()
方法完成时,一些方法将调用,并在该方法中启动新活动。类似下面的代码:
uploadImage(new ResponeListener() {
@override
public void onDataReady(String nameString) {
Intent randomintent = new Intent(profile.this,loggedactivity.class);
Bundle b = new Bundle();
b.putString("name", namestring);
startActivity(randomintent);
}
}
最好使用
AsynkTask
创建一个类,它应该从AsynkTask
扩展。在doInBackground
中,上传照片,处理回复并发送链接。在onPostExecute
方法中,转到其他活动
更新1
class myClass extends AsyncTask<Void,Void,Void>{
@Override
protected Void doInBackground(Void... params) {
String result = uploadPhotos();
proccess result;
send links;
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
Intent randomintent = new Intent(profile.this, loggedactivity.class);
randomintent .putString("name", namestring);
startActivity(randomintent);
}
}
但在编写代码之前,我认为您需要更多地了解android中的web连接过程。请分享您的
uploadImage()
和infosendstuff()
代码。您的包似乎没有任何用处。你有没有考虑过使用putExtra()
?@jake我试过了,但效果也一样!但是,当您在另一个活动
中检索该值时,您是否获得了该值?请发布看起来合乎逻辑的uploadImage()
infosendstuff()
方法。谢谢但是你知道我是否也可以安装infosendstuff();这个ondataready中的方法?所以,当图像上传时,它可以被触发吗?是的,但是你应该考虑如果IfSoNoStutsFor()在网络上也做一些工作,活动将在它之前完成。谢谢
new myClass().execute();