Sam*_*oid 4 android android-intent android-activity start-activity onactivityresult
我有以下活动屏幕
活动A - 包含链接到活动B的按钮
活动B - 包含订单确认,然后是下一个按钮,打开活动C(捕获签名)
活动C - 弹出一个对话框,供用户输入其签名和一个完整的按钮.
活动A - 包含意图开始启动活动B并实现onActivityForResult
Intent intent = new Intent( this, ConfirmLines.class );
startActivityForResult( intent, GET_SIGNATURE );
protected void onActivityResult( int requestCode, int resultCode, Intent intent )
{
super.onActivityResult( requestCode, resultCode, intent );
switch ( requestCode )
{
case GET_SIGNATURE:
if ( resultCode == RESULT_OK )
{
getIntent().putExtra( SIGNATURE_DATA, intent.getStringExtra( SignatureCapture.SIGNATURE_RESULT ) );
getIntent().putExtra( SIGNATURE_TIME, "34552655544" ); // todo - remove hardcoded signature time
showDialog( PRINT_NAME );
}
else
{
//reset data after a cancel/back from signature screen
getIntent().putExtra( SignatureCapture.SIGNATURE_RESULT, "" );
}
break;
}
}
Run Code Online (Sandbox Code Playgroud)
活动B - 包含启动签名捕获意图的代码以及返回活动A的onActivityForResult.
final Intent intent = new Intent( this, SignatureCapture.class );
startActivityForResult( intent, GET_SIGNATURE );
@Override
protected void onActivityResult( int requestCode, int resultCode, Intent intent )
{
super.onActivityResult( requestCode, resultCode, intent );
switch ( requestCode )
{
case GET_SIGNATURE:
if ( resultCode == RESULT_OK )
{
finish();
}
}
}
Run Code Online (Sandbox Code Playgroud)
活动C - 包含签名捕获代码和完整按钮
public void onClick( View view )
{
switch ( view.getId() )
{
case R.id.button_cancel:
dismiss();
nameValue.setText( "" );
notesValue.setText( "" );
imageView_button.setImageBitmap( null );
break;
case R.id.button_confirm:
final String printedText = String.valueOf( nameValue.getText() );
if ( printedText.isEmpty() )
{
Toast.makeText( getContext(), "Please enter a name", Toast.LENGTH_SHORT ).show();
}
else
{
if ( mDialogResult != null )
{
mDialogResult.finish( String.valueOf( nameValue.getText() ), String.valueOf( notesValue.getText() ) );
}
nameValue.setText( "" );
notesValue.setText( "" );
dismiss();
}
break;
}
}
Run Code Online (Sandbox Code Playgroud)
我被卡住,当我返回到活动A,将resultCode为等于0,作为结果被取消其定义.
它正在拾取正确的requestCode,因为它最初是从Activity A开始的,但它只是这个resultCode似乎是问题,如果有人能看出原因?
从活动C返回时,可能是从活动B调用finish()吗?
另外,我需要将Intent数据从Activity C传递给A.如果我在Activity A中有finish(),那么我在活动A中有start(),然后它就不会进入onActivityForResult.
感谢先进的帮助:]
Gra*_*Sim 22
如果您希望将活动C的结果传递回活动A:
从活动A开始活动B:
Intent showB = new Intent(ActivityA, ActivityB);
startActivityForResult(showB, RequestCode);
Run Code Online (Sandbox Code Playgroud)
在活动B中调用C:
Intent showC = new Intent(ActivityC);
showC.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivity(showC);
finish(); //Close Activity B
Run Code Online (Sandbox Code Playgroud)
在C:
//set the result code and close the activity
Intent result = new Intent();
setResult(resultCode, result);//like RESULT_OK
finish();
Run Code Online (Sandbox Code Playgroud)
在一个:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
...... handle RequestCode here
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4116 次 |
| 最近记录: |