Android Java集成:Fragment、Activity交互实例

原创 左手的ㄟ右手 2024-12-05 02:39 122阅读 0赞

在Android开发中,Activity和Fragment是两种主要的组件。它们之间可以通过多种方式进行交互,下面我将举几个实例。

  1. Activity启动Fragment

    • Activity A启动一个Fragment F
      1. // A.java (MainActivity)
      2. getSupportFragmentManager().beginTransaction()
      3. .add(R.id.container, F)) // F is the Fragment
      4. .commit();
  2. Fragment通过事件传递数据给Activity

    • Fragment F有一个按钮点击后将数据传回。
      ```java
      // F.java (MyFragment)
      View.OnClickListener buttonClickListener = new View.OnClickListener() {
      @Override
      public void onClick(View v) {

      1. // 获取数据并封装到Bundle中
      2. Bundle dataBundle = new Bundle();
      3. dataBundle.putString("myData", "This is the data"));
      4. // 通过Intent传递数据给Activity
      5. Intent intent = new Intent(Fragment.this, MainActivity.class));
      6. intent.putExtras(dataBundle);
      7. Fragment.this.getFragmentManager().beginTransaction()
      8. .replace(R.id.container, F)) // Remove previous fragment
      9. .commit();

      }
      };
      button = findViewById(R.id.button);
      button.setOnClickListener(buttonClickListener);

  3. Activity通过Broadcast接收Fragment传递的数据

    • Activity A订阅一个特定的广播。
      ```java
      // A.java (MainActivity)
      BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
      @Override
      public void onReceive(Context context, Intent intent) {
      1. // 解析收到的Bundle数据
      2. Bundle dataBundle = intent.getExtras();
      3. if (dataBundle != null && "myData".equals(dataBundle.getString("key")))) {
      4. String receivedData = dataBundle.getString("myData");
      5. Log.d(TAG, "Received data: " + receivedData);
      6. }
      }
      };
      IntentFilter filter = new IntentFilter(BROADCAST_ACTION_NAME);
      registerReceiver(broadcastReceiver, filter);

这里的BROADCAST_ACTION_NAME是Fragment在特定条件下(如数据变化)通过Broadcast发送的字符串。

以上就是Android集成中Activity和Fragment交互的一些实例,实际开发中会根据需求灵活设计。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,122人围观)

还没有评论,来说两句吧...

相关阅读