a179583637 2016-07-09 13:22 采纳率: 0%
浏览 1440
已采纳

还是来请教大牛吧,关于activity传数据到fragment中的问题

我有一个MainActivity,里面有三个fragment,然后第三个fragment中有登录按钮跳转到LoginMainActivity,我想要实现当点击LoginActivity中的登录按钮返回,并且把LoginActivity中的name传到Fragment中的TextView;
下面是MainAtivity中Fragment的代码
package textview.exam;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

public class FragmentMe extends Fragment{
protected String result;
Button loginbutton;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);

}

@Override
public View onCreateView(LayoutInflater inflater,
                         @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    View view=inflater.inflate(R.layout.main_me,container,false);
    loginbutton=(Button)view.findViewById(R.id.login);
    loginbutton.setOnClickListener(startLoginListener);
    return view;
}
View.OnClickListener startLoginListener=new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent=new Intent(getActivity(), LoginActivity.class);
        startActivity(intent);
        getActivity().overridePendingTransition(R.anim.push_down_in, R.anim.push_down_out);

    }

};

}

下面是LoginActivity的代码
package textview.exam;

import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

import java.util.ArrayList;
import java.util.List;

public class LoginActivity extends Activity {
Button okbutton;
String name;
String pass;

HttpClient httpClient;
Handler handler = new Handler()
{
    public void handleMessage(Message msg)
    {
        if(msg.what == 0x123)
        {


        }
    }
};
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login);
    final ActionBar actionBar = getActionBar();
    actionBar.hide();
    httpClient=new DefaultHttpClient();
    okbutton=(Button)findViewById(R.id.ok);
    okbutton.setOnClickListener(loginokListener);
    Button loginback=(Button)findViewById(R.id.backlogin);
    loginback.setOnClickListener(backloginListener);

}
View.OnClickListener backloginListener=new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        finish();
    }
};
View.OnClickListener loginokListener=new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        // 获取用户输入的用户名、密码
        name = ((EditText)findViewById(R.id.login_name)).getText().toString();
        pass = ((EditText)findViewById(R.id.login_password)).getText().toString();
        new Thread()
        {
            @Override
            public void run()
            {
                try
                {
                    HttpPost post = new HttpPost("http://192.168.100.101:8080/foo/login.jsp");//③
                    // 如果传递参数个数比较多,可以对传递的参数进行封装
                    List<NameValuePair> params = new ArrayList<>();
                    params.add(new BasicNameValuePair
                            ("name", name));
                    params.add(new BasicNameValuePair
                            ("pass", pass));
                    // 设置请求参数
                    post.setEntity(new UrlEncodedFormEntity(
                            params, HTTP.UTF_8));
                    // 发送POST请求
                    HttpResponse response = httpClient.execute(post);  //④
                    // 如果服务器成功地返回响应
                    if (response.getStatusLine()
                            .getStatusCode() == 200)
                    {
                        String msg = EntityUtils
                                .toString(response.getEntity());
                        Log.i("wolaoadmasmdas"+msg,"");
                        Looper.prepare();
                            Toast.makeText(LoginActivity.this,
                                    msg, Toast.LENGTH_LONG).show();
                            Looper.loop();
                    }
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
            }
        }.start();
    }
};
//返回动画
protected void onPause() {
    super.onPause();
    overridePendingTransition(R.anim.in_from_down,
            R.anim.out_to_up);
}

}

  • 写回答

3条回答 默认 最新

  • a179583637 2016-07-11 07:57
    关注

    我自己查书解决了,具体步骤是在MainActivty的Fragemt中用startActivityForResult启动Loginactivity,然后在loginactivity中写 Intent in = getIntent();
    in.putExtra( "result", uname );
    LoginActivity.this.setResult(0, in);
    LoginActivity.this.finish();
    然后在Mainactivity中的Fragment中调用 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent intent)
    {
    if(requestCode==0&&resultCode==0){
    Bundle data=intent.getExtras();
    String name=data.getString("result");
    main_me_loginsuccess.setText(name);
    loginbutton.setText("退出");
    loginbutton.setOnClickListener(stopLoginListener);

        }
    
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题