这已经杀了我两天了.我有一个主要的活动A,它调用第二个活动B.活动B只是向用户显示一个列表视图.当我按下列表视图中的项目时,我希望将几个字符串传递回主要活动A,然后Activiy B将完成.
问题是我总是得到一个0的结果代码,数据包是null.我真的不明白为什么会这样.
这是我的代码.
开始活动B获得结果;
Test.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(recipeActivity.this, BrowseLoadRecipes.class);
startActivityForResult(i, RECIPE_CHOOSER);
}
});
Run Code Online (Sandbox Code Playgroud)
这将启动第二个活动罚款.活动B填充列表视图,当我单击一个项目时,我正在尝试将一些数据发送回调用活动A.
目前任何文字,所以我在活动B中使用了以下内容;
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
Bundle bundle = new Bundle();
bundle.putString("TEXT", "Please work... pleeeeaasee");
Intent mIntent = new Intent();
mIntent.putExtras(bundle);
setResult(RESULT_OK, mIntent);
finish();
}
});
Run Code Online (Sandbox Code Playgroud)
在调用活动中,我有以下内容听取如下返回;
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
switch(requestCode) {
//TODO
case RECIPE_CHOOSER:
Toast.makeText(getApplicationContext(), "In recipe return", …Run Code Online (Sandbox Code Playgroud) 我称之为主要活动的子活动.这个子活动应该从用户那里拿几个数字(我使用编辑文本控件来实现这一点),将它们保存到另一个类中的静态变量并终止.我希望主要活动等待子活动,但两者都只是同时运行.即使这样做也无济于事:
Thread t = new Thread(new Runnable(){
public void run(){
Log.v("==================", "run "+new Date());
startActivityForResult(new Intent(ctx,myCustomSubactivity.class),1);
} });
Log.v("==================", "calling run "+new Date());
t.start();
try {
t.join();
} catch (InterruptedException e) {Log.v("==================", "can't join");}
Log.v("==================", "back from activity "+new Date());
Run Code Online (Sandbox Code Playgroud)
你知道如何强迫主要活动等待吗?Android中不支持Thread.wait()方法(程序抛出错误).
在测试期间,我注意到有时候我的子活动的finish()没有执行onActivityResult.大多数时候它工作正常,我无法弄清楚,何时以及为什么会出现这个问题.
子活动开始:
public void launchSubActivity(Class<? extends Activity> subActivityClass, Bundle data,
OnSubActivityResult callback) {
Intent i = new Intent(this, subActivityClass);
if(data!=null) i.putExtras(data);
Random rand = new Random();
int correlationId = rand.nextInt();
_callbackMap.put(correlationId, callback);
startActivityForResult(i, correlationId);
}
Run Code Online (Sandbox Code Playgroud)
子活动完成:
public void select() {
Bundle b = new Bundle();
b.putInt("YEAR", year_result);
b.putInt("MONTH", month_result);
b.putInt("DAY", day_result);
this.getIntent().putExtras(b);
this.setResult(RESULT_OK, this.getIntent());
this.finish();
}
Run Code Online (Sandbox Code Playgroud)
onActivityResult(由Nazmul Idris撰写):
/**
* this is the underlying implementation of the onActivityResult method that
* handles auto generation of correlationIds and adding/removing …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Monkey debuggin工具(来自adb)对我的应用程序的一部分进行压力测试.由于Monkey以完全随机的方式运行,我希望它专注于可能包含我正在寻找的错误的代码部分(非常罕见的错误,我不知道如何复制它).
因此,在我的主要活动中,我有6个按钮,每个按钮都会激活一个新活动.我想将猴子设置为只查看其中一个活动,并且每个活动都可以从中查看.我找不到合理的方法来做到这一点.
我已经尝试了
adb shell monkey -p my.package.name -c android.intent.category.MONKEY 1000
并且在我的清单文件中我已经进行了一些我感兴趣的活动:
<intent-filter>
<category android:name="android.intent.category.MONKEY"/>
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
但它没有用.Monkey仍然会激活未按此标记分类的活动.猴子在选定的子活动中工作至关重要,因为在我实际想要测试的子活动之外,它浪费了大约95%的时间在我的应用程序中漫游.
此外,我尝试了一些简单的脚本来启动所需的子活动,但没有成功.
寻找任何帮助,
欢呼,
kajman
是否可以在当前活动之上添加活动.例如,假设我单击一个按钮,然后它向当前活动添加第二个活动.第二项活动只涵盖了我当前活动的一小部分.
我创建了一个与服务器异步通信的应用程序.当应用程序发出服务器请求时,会创建一个带有"加载"通知的新对话框(活动).主要活动实现了处理服务器响应的方法,我想在主活动从服务器收到答案时关闭前台活动.
通知对话框按以下方式创建:
private void showServerRequestDialog(String actionLabel){
Intent intent = new Intent(this, DlgServerRequest.class);
intent.putExtra(SERVER_REQUEST_ACTION, actionLabel);
startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
所以当用户尝试进行身份验证时,会调用以下方法:
private void authenticateUser(String IMEI, String username, String password){
mEncoderConnection.authenticateRequest(IMEI, username, password);
showServerRequestDialog("Authenticating...");
}
Run Code Online (Sandbox Code Playgroud)
和onAuthenticateResponse处理身份验证响应:
public void onAuthenticateResponse(AuthenticateResponse pkg) {
//code for response handling
//TODO: close ServerRequestDialog
}
}
Run Code Online (Sandbox Code Playgroud)
如果有人可以建议在执行onAuthenticateUser()时关闭通知对话框(DlgServerRequest),我将不胜感激.
我对Android编程比较陌生.我在工作中得到了一项任务,我需要创建一个自定义主页活动启动器.我做了一些研究,并在Android开发者网站(主页样本)上找到了这个例子.这是我原型的开始.
自定义Home活动需要用户进行身份验证(输入一些简单的凭据).我的想法是从Home活动启动一个子活动,并将意图中的结果传回Home活动.我需要能够捕获有关这些凭据的信息,并且该信息将被传递回Home活动.但是,尝试这个时我遇到了问题.我在LogCat中登录了以下内容:"活动正在作为新任务启动,因此取消了活动结果."
我知道startActivityForResult方法,但这对我来说似乎没有用.这是我从家庭活动中启动活动的地方:
@Override
protected void onResume() {
super.onResume();
bindRecents();
Intent iii = new Intent(this, Login.class);
startActivityForResult(iii, STATIC_LOGIN_INTEGER_VALUE);
}
Run Code Online (Sandbox Code Playgroud)
当代码执行时,我从ActivityManager标记中获取上述日志.
我的登录活动有一个用户输入凭据后将会点击的按钮.如果凭据是好的,那么我尝试执行以下操作(我输入了几个日志,以便我可以尝试弄清楚发生了什么):
public void onClick(View src) {
// check for authentic credentials
if(IsValid())
{
Intent loginAuth = new Intent("Login");
loginAuth.putExtra("userRole", userRole);
Log.d("LOGIN", "Setting result...");
if (getParent() == null) {
Log.d("LOGIN", "Parent was null");
setResult(Activity.RESULT_OK, loginAuth);
}
else {
Log.d("LOGIN", "setting result on parent...");
getParent().setResult(Activity.RESULT_OK, loginAuth);
}
Log.d("LOGIN", "Finishing the activity");
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
我在清单文件中将这些活动定义如下:
<activity android:name="Home"
android:theme="@style/Theme"
android:launchMode="singleInstance"
android:stateNotNeeded="true"> …Run Code Online (Sandbox Code Playgroud) android subactivity android-activity android-launcher android-homebutton