如题
解决方案 »
- getWritableDatabase()出现空指针错误
- Android手机编程初学者问题
- 安装APIDEMO时出现Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY
- android应用程序怎样实现绑定信用卡支付?
- android监听usb拔插事件
- 请前辈推荐一款Android程序的反编译工具
- 请教一下,如何创建一个线程?
- Android如何利用sip实现语音、视频通话
- 安卓中按键消息无法运行
- 程序中用socket通信,自己手机测试没问题,为什么外省的同学手机收不到??
- android中代码布局的问题
- 一个令人无比蛋疼的线程里更新ListView的问题
{
try
{
Window window = getLocalActivityManager().startActivity(id, intent);
View v = window.getDecorView();
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
LayoutParams param = new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT);
v.setLayoutParams(param);
containerFlipper.addView(v);
containerFlipper.showNext();
stack.push(id);
}
catch(Exception err)
{
err.printStackTrace();
}
}其中 containerFlipper 是布局上的 ViewFlipper 控件。
下面是我启动新窗口和获取结果的代码//启动新窗体
@Override
public void onClick(View v)
{
//添加新列表按钮
if(v.getId()==R.id.btnAddMusicList)
{
//启动一个新的activity(Setting)
Intent intent = new Intent();
intent.setClass(MyMusicListActivity.this, AddNewMusicListActivity.class);
//给新的activity(Setting)
intent.putExtra("MusicListName", "");
startActivityForResult(intent,AppConstant.ReturnCode_AddNewMusicListReturnCode);
}
}
//获取返回结果,但是这段代码根本就没有执行
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(resultCode==RESULT_OK)
{
String strName=data.getExtras().getString("strListName");
if(!strName.equals(""))
{
myDb.insertData( strName);
ShowMusicList();
}
}
}
{
try
{
Window window = getLocalActivityManager().startActivity(id, intent);
View v = window.getDecorView();
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
LayoutParams param = new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT);
v.setLayoutParams(param);
containerFlipper.addView(v);
containerFlipper.showNext();
stack.push(id);
}
catch(Exception err)
{
err.printStackTrace();
}
//intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
}如果这个类不再 Tabhost调用的或是有返回结果的
代码是这么写的 //OK
class BtnOKListListener implements OnClickListener
{
@Override
public void onClick(View v)
{
String strListName=txtName.getText().toString();
getIntent().putExtra("strListName",strListName);
AddNewMusicListActivity.this.setResult(RESULT_OK, getIntent());
finish();
}
}
class BtnOKListListener implements OnClickListener
{
@Override
public void onClick(View v)
{
String strListName=txtName.getText().toString();
getIntent().putExtra("strListName",strListName);
AddNewMusicListActivity.this.setResult(RESULT_OK, getIntent());
finish();
}
}
class BtnOKListListener implements OnClickListener
{
@Override
public void onClick(View v)
{
String strListName=txtName.getText().toString();
getIntent().putExtra("strListName",strListName);
AddNewMusicListActivity.this.setResult(RESULT_OK, getIntent());
finish();
}
}
整个类的代码是这样package mars.mp3player;
import mars.database.MyDataBaseAdapter;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;public class AddNewMusicListActivity extends BaseActivity
{
private Button btnOk;
private Button btnCancle;
private EditText txtName;
private Boolean isEdit;
//全局变量保存intent
private Intent intent;
//数据库操作类
private MyDataBaseAdapter myDb;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.addmusiclist);
btnOk=(Button)findViewById(R.id.btnOk_AddMusicList);
btnCancle=(Button)findViewById(R.id.btnCancle_AddMusicList);
txtName=(EditText)findViewById(R.id.txtName_AddMusicList);
btnOk.setOnClickListener(new BtnOKListListener());
btnCancle.setOnClickListener(new BtnCancleMusicListener());
myDb =new MyDataBaseAdapter(AddNewMusicListActivity.this);
myDb.open();
//获取前一个activity(StartAntherActivity)传过来的数据
intent=getIntent();
if(intent !=null)
{
Bundle bd = intent.getExtras();
String strListName = bd.getString("MusicListName");
isEdit=false;
if(!strListName.equals(""))
{
txtName.setText(strListName);
isEdit=true;
}
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
if(myDb !=null)
myDb.close();
super.onDestroy();
}
//OK,返回结果
class BtnOKListListener implements OnClickListener
{
@Override
public void onClick(View v)
{
String strListName=txtName.getText().toString();
if(intent !=null)
{
intent.putExtra("strListName",strListName);
AddNewMusicListActivity.this.setResult(RESULT_OK, intent);
}
AddNewMusicListActivity.this.finish();
}
}
//Cancle
class BtnCancleMusicListener implements OnClickListener
{
@Override
public void onClick(View v)
{
finish();
}
}
}
剩下的跟平时一样。
如果是加了这句话,是看不到返回值的,因为在界面启动的时候就调用了一次返回操作,以后就不会再有返回值了
例如
Intent intent = new Intent(this, BActivity.class);
startActivityForResult(intent, 1);
结果先会调用到 AActivity中的onActivityResult,
而在BActivity设置setResult(Activity.RESULT_OL)后,
AActivity的onActivityResult不会接受到通知。解决方案:设置BActivity为singleTop.
设置了目标BActivity为singleTask后,在AActivity中调用BActivity,
例如
Intent intent = new Intent(this, BActivity.class);
startActivityForResult(intent, 1);
结果先会调用到 AActivity中的onActivityResult,
而在BActivity设置setResult(Activity.RESULT_OL)后,
AActivity的onActivityResult不会接受到通知。解决方案:设置BActivity为singleTop.[/Quote]
那个activity的配置很正常,不像你们说的那样配置如下<activity android:name=".AddNewMusicListActivity" android:theme="@android:style/Theme.Dialog"/>
A.java里面
Intent intent = new Intent( A.this, B.class );
startActivityForResult( intent, 1 ); protected void onActivityResult( int requestCode, int resultCode, Intent intent )
{
switch( requestCode )
{
case 1:
String path = intent.getStringExtra( "result" );
//do something
break;
default :
break;
}
}
B.java里面 private OnClickListener btnListener = new Button.OnClickListener()
{
@Override
public void onClick( View v )
{
Intent intent = new Intent();
intent.putExtra( "result",
"test1111" );
B.this.setResult( 1, intent );
B.this.finish();
}
};
接分的请进