Fragmentがactivityに値を渡す
2797 ワード
Fragmentがactivityに値を渡す
1.Fragmentにコールバックインタフェースを書く
2.activityでこのコールバックインタフェースを実現する
3,FragmentでonAttachメソッドでactivityで実現した良いインスタンス化インタフェースオブジェクトを得る
4,インタフェースのオブジェクトで値を渡す
コード:
MainActivity:
Fragment:
1.Fragmentにコールバックインタフェースを書く
2.activityでこのコールバックインタフェースを実現する
3,FragmentでonAttachメソッドでactivityで実現した良いインスタンス化インタフェースオブジェクトを得る
4,インタフェースのオブジェクトで値を渡す
コード:
MainActivity:
package com.qianfeng.fragmenttoactivity;
import com.qianfeng.fragmenttoactivity.Fragmen1.CallBackValue;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.view.Menu;
import android.widget.TextView;
@SuppressLint("NewApi")
public class MainActivity extends Activity implements CallBackValue{
private TextView tv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv1 = (TextView) findViewById(R.id.tv1);
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.contents, new Fragmen1());
transaction.commit();
}
//
@Override
public void SendMessageValue(String strValue) {
// TODO Auto-generated method stub
tv1.setText(strValue);
}
}
Fragment:
package com.qianfeng.fragmenttoactivity;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
@SuppressLint("NewApi")
public class Fragmen1 extends Fragment{
private Button btn1;
private EditText et1;
CallBackValue callBackValue;
/**
* fragment activity
*/
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
// fragment activity
callBackValue =(CallBackValue) getActivity();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.fragment_layout1, container, false);
btn1 = (Button) view.findViewById(R.id.btn1);
et1 = (EditText) view.findViewById(R.id.et1);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String strValue = et1.getText().toString().trim();
callBackValue.SendMessageValue(strValue);
}
});
return view;
}
//
public interface CallBackValue{
public void SendMessageValue(String strValue);
}
}