Fragment向Activity傳遞值


一.Fragment向Activity傳值的步驟 接口回調傳遞(5部曲)

  • fragment中准備回調接口 接口中聲明傳值的回調方法

  • 在fragment中定義屬性private MyListener myListener

  • 重寫fragment中的onAttach()方法
    listener = (MyLisener)getActivity();

  • fragment觸發事件時回傳值

  • Activity中實現回調接口 重寫回調方法獲取回傳的值並顯示

    import android.app.Activity;
    import android.app.FragmentManager;
    import android.app.FragmentTransaction;
    import android.os.Bundle;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class MainActivity extends Activity implements MyListener{
        private TextView textView;  
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            textView = (TextView) findViewById(R.id.textView);
            FragmentManager manager = getFragmentManager();
            FragmentTransaction transaction = manager.beginTransaction();
            transaction.add(R.id.layout_container_fragment, new MyFragment());
            transaction.commit();        
        }
    
        @Override
        public void sendContent(String info) {
            if (info!=null && !"".equals(info)) {
                textView.setText(info);
            }else {
                Toast.makeText(MainActivity.this, "請輸入內容", Toast.LENGTH_SHORT).show();
            }
        }
    }
    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;
    
    public class MyFragment extends Fragment {
        private EditText editText;
        private Button button;  
        private MyListener myListener;//②作為屬性定義 
        //①定義回調接口
        public interface MyListener{
            public void sendContent(String info);
        }
        
        @Override
        public void onAttach(Activity activity) {
            super.onAttach(activity);
            myListener = (MyListener) getActivity();
        }
        
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.layout_fragment, container, false);
            editText = (EditText) view.findViewById(R.id.editText1);
            button = (Button) view.findViewById(R.id.button1);
            
            //點擊按鈕時需要將EditText中的值取出來傳給宿主Activity
            button.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    String value = editText.getText().toString();
                    myListener.sendContent(value);//將內容進行回傳
                }
            });
            return view;
        }
    }

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM