1. android fragment打开activity activity结束后怎么回传数据
第一步:
我们要在父类的FragmentActivity中进行一步操作:
public class MyFragmentActivity extends FragmentActivity{
public FragmentTransaction mFragmentTransaction;
public FragmentManager fragmentManager;
public String curFragmentTag = "";
...
/*在fragment的管理类中,我们要实现这部操作,而他的主要作用是,当D这个activity回传数据到
这里碎片管理器下面的fragnment中时,往往会经过这个管理器中的onActivityResult的方法。*/
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
/*在这里,我们通过碎片管理器中的Tag,就是每个碎片的名称,来获取对应的fragment*/
Fragment f = fragmentManager.findFragmentByTag(curFragmentTag);
/*然后在碎片中调用重写的onActivityResult方法*/
f.onActivityResult(requestCode, resultCode, data);
}
...
}
第二步:比如,在c碎片中(fragment),我们要进行的操作:
A:对了,这里需要注意下:在实际开发中,往往会出现在子的fragment中,还会去管理下一层的多个碎片的管理,对于这种比较复杂的碎片管理传值又需怎样做呢?其实做法还是和上面一样的
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Fragment f = fragmentManager.findFragmentByTag(curFragmentTag);
f.onActivityResult(requestCode, resultCode, data);
}
B:好的,终于进入主题了,到最终的b(fragment)接收传过来的数据了。那我就直接上代码了:
public class b extends Fragment{
***
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 1:
if (resultCode != Activity.RESULT_OK) {
return;
}
break;
default:
break;
}
}
***
}
2. android 第一个activity通过intent启动第二个activity,并且获得数据返回到第一个activity,并且更改界面
开始第二个activity的时候,用startActivityForResult来开始,然后在第一个Activity里重写onActivityResult,就可以接收第二个Activity的数据了,第二个Activity返回给第一个的时候可以用setResult来设定返回的数据。
望采纳
3. android,返回上一个activity时,怎么传递数据给上一个activity
最简单的方法第一个activity自己写一个方法,第二格返回到第一个的时候调用方法。
最正规的还是楼上说的用第一个activity通过startActivityForResult()启动第二个activity
4. Android 如何获取activity返回的数据
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
}
5. 如何将数据从Activity返回到Fragment
1、在实际应用中,我们不仅要向Activity中传数据,也要从Activity中返回数据。虽然传递数据和返回数据类似,也可以采用前面四篇中提到的4种方法,但是一般建议采用Intent对象的方式来返回数据,使用这种方式返回数据,需要使用startActivityForResult方法来显示Activity;
2、新建Android项目“android_intent_forresult”,打开布局文件“activity_main.xml”,添加“LinearLayout”、“TextView”、“EditView”等标签,代码如下:
<LinearLayout xmlns:android=" hemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<EditText
android:id="@+id/one"
android:layout_width="20dp"
android:layout_height="wrap_content" >
</EditText>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" + " >
</TextView>
<EditText
android:id="@+id/two"
android:layout_width="20dp"
android:layout_height="wrap_content" >
</EditText>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" = " >
</TextView>
<EditText
android:id="@+id/result"
android:layout_width="20dp"
android:layout_height="wrap_content" >
</EditText>
</LinearLayout>
<Button
android:id="@+id/button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="计算结果" >
</Button>
</LinearLayout>
3、新建布局文件“other.xml”,添加“TextView”、“EditView”、“Button”标签,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=" mas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/msg"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</TextView>
<EditText
android:id="@+id/three"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</EditText>
</LinearLayout>
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="返回结果" >
</Button>
</LinearLayout>
4、新建“OtherActivity.java”文件,并使其继承“Activity”,添加“onCreate”方法,代码如下:package com.android.myintent;
import android.app.Activity;
import android.os.Bundle;
public class OtherActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
}
}
5、在“AndroidManifest.xml”清单文件中加入“Activity”,加入代码:<activity android:name=".OtherActivity" >
</activity>
6、在“Main.java”中添加Button成员和“setOnClickListener”,实现两个Button的跳转,点击第一个Activity后,出现第二个Activity;在此方法内部创建意图,用“startActivityForResult”启动意图,并在Main类里重写“onActivityResult”;添加“EditText”成员,实现数据的输入并传入Intent中。代码如下:
package com.android.myintent;
import android.R.integer;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class Main extends Activity {
private Button button;
private final static int REQUESTCODE = 1;// 表示返回的结果码
private EditText one, two, result; // 数据输入
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
one = (EditText) this.findViewById(R.id.one);
two = (EditText) this.findViewById(R.id.two);
result = (EditText) this.findViewById(R.id.result);
button = (Button) this.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
// 点击后获得用户录入的值
int a = Integer.parseInt(one.getText().toString());
int b = Integer.parseInt(two.getText().toString());
// 创建意图
Intent intent = new Intent(Main.this, OtherActivity.class);
// 将值传入意图
intent.putExtra("a", a);
intent.putExtra("b", b);
startActivityForResult(intent, REQUESTCODE);// 表示可以返回结果
}
});
}
// 再重写一个onActivityResult方法,作用是将当前Activity中的数据传递到另一个Activity的意图中后,实现跳转,再回传回来。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
7、在“OtherActivity.java”文件中添加Button和TextView成员,获取意图中的数据,代码如下:package com.android.myintent;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
public class OtherActivity extends Activity {
private Button button;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
// 实例化button和textview
button = (Button) this.findViewById(R.id.button2);
textView = (TextView) this.findViewById(R.id.msg);
Intent intent = getIntent(); // 获取Intent
// 取出Intent中的值
int a = intent.getIntExtra("a", 0);
int b = intent.getIntExtra("b", 0);
textView.setText(a + " + " + b + " = " + " ? ");
}
}
运行一下,看下效果:
点击“计算结果”,跳转到第二个Activity:
6. android:.java怎么返回数据给Activity
Intent intent = new Intent();
intent.setClass(TrainTicketsInquiryActivity.this, ShowSectionActivity.class);
intent.putExtra("entity", trainNumber.getText().toString());
startActivity(intent);
绑定参数并跳转正解,望采纳
7. android中 activity1中启动了activity2, activity2中启动了activity3,怎么把activity3中的值直接返回给
不能,Activity 只能把结果传递给调用者。
可以找一些变通的方法,比如全局变量,广播,注册回调等
8. 怎样实现android 返回到上一个Activity并重新执行一次onCreate方法
1、onCreate
方法只在activity一开始创建的时候执行。
2、也就是在该activity销毁后才能再次执行,假如当前activity上再打开一个activity,并且原来的activity已经销毁了,再返回原来的activity会重新执行onCreate
3、可以通过activity的生命周期的onStart方法或者是onResume方法对原来界面的数据进行刷新,也可以使用回调方法,或者是handler
+
Message
9. android activity从一个activity调到另一个activity 返回的时候数据刷新怎么办
启动另外一个activity的时候用startActivityResult,别用startActivity
然后在启动前这个Activity的onActivityResult中写刷新的代码
启动前这个activity的代码
publicvoidonButtonClick(Viewv){
Intentintent=newIntent(this,TranslateActivity.class);
startActivityForResult(intent,100);
//100是可以自定义的一个数值,只要和onActivityResult中的100对应上就行
}
@Override
protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){
super.onActivityResult(requestCode,resultCode,data);
if(resultCode==RESULT_OK){
if(requestCode==100){
//刷新的代码写在这里
}
}
}
后一个activity关闭时的代码片段
publicvoidonBtnCloseClick{
Intentintent=newIntent();
intent.putExtra("user","bcoder");
//设置返回结果为RESULT_OK,intent可以传入一些其他的参数,在onActivityResult中的data中可以获取到
setResult(RESULT_OK,intent);
}
10. android 刚开始从Activity1(显示数据)跳转到了Activity2(插入数据),现在插入完成后想通过返回键返回
有多种方式咯:
通常是用Extra来做的
这样说,比如你要打开一个活动Activity,就得有个意图intent
这个intent在发起前,你可以调用putExtra(String,Object),第一个参数是key,第二个是value
然后在打开的Activity里,用getIntent()获得打开它的意图,然后该意图getExtra就好了
比如取一个boolean,就是getBooleanExtra("MyBoolean",false);
MyBoolean是key,false是预设默认值。