标签: subactivity

Android onActivityResult始终为0

这已经杀了我两天了.我有一个主要的活动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)

android subactivity

17
推荐指数
2
解决办法
2万
查看次数

如何强制主要Acivity在Android中等待子活动?

我称之为主要活动的子活动.这个子活动应该从用户那里拿几个数字(我使用编辑文本控件来实现这一点),将它们保存到另一个类中的静态变量并终止.我希望主要活动等待子活动,但两者都只是同时运行.即使这样做也无济于事:

     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()方法(程序抛出错误).

android blocking wait subactivity android-activity

6
推荐指数
2
解决办法
3万
查看次数

当Sub-Activity完成时,有时不会调用onActivityResult

在测试期间,我注意到有时候我的子活动的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)

android subactivity

6
推荐指数
1
解决办法
1658
查看次数

仅在子活动中使用Monkey(android调试)

我正在尝试使用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

android intentfilter categories subactivity monkey

5
推荐指数
1
解决办法
2483
查看次数

Android ==>子活动?

是否可以在当前活动之上添加活动.例如,假设我单击一个按钮,然后它向当前活动添加第二个活动.第二项活动只涵盖了我当前活动的一小部分.

android subactivity android-activity

4
推荐指数
1
解决办法
3872
查看次数

Android:如何从活动活动中关闭前台活动?

我创建了一个与服务器异步通信的应用程序.当应用程序发出服务器请求时,会创建一个带有"加载"通知的新对话框(活动).主要活动实现了处理服务器响应的方法,我想在主活动从服务器收到答案时关闭前台活动.

通知对话框按以下方式创建:

 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 subactivity android-activity

2
推荐指数
1
解决办法
1万
查看次数

Android Home活动启动子活动

我对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

2
推荐指数
1
解决办法
5622
查看次数