如何将数据从片段容器活动传递到另一个活动

时间:2018-01-31 15:12:12

标签: java android tensorflow computer-vision

我正在开发一个Android应用程序,用于在android上使用tensorflow预测食物项目。我正在遵循指令并使用Google Codelab - Tensorflow for poets 提供的代码。我添加了一个额外的活动并使其成为MainActivity,我将从中启动CameraActivity使用FAB。我想要做的是在导航栏上按下后退按钮时,显示在活动CameraActivity中运行的片段Camera2BasicFragment中显示的预测到我的MainActivity上的toast。您还可以从第2页找到完整代码教程链接。

Camera2BasicFragment

  private void showToast(final String text) {
    final Activity activity = getActivity();
    if (activity != null) {
      activity.runOnUiThread(
          new Runnable() {
            @Override
            public void run() {
              textView.setText(text);
            }
          });
    }
  }

CameraActivity.java

public class CameraActivity extends Activity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_camera);
    if (null == savedInstanceState) {
      getFragmentManager()
          .beginTransaction()
          .replace(R.id.container, Camera2BasicFragment.newInstance())
          .commit();
    }

  }
}

MainActivity.java

floatingActionButton1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                //TODO something when floating action menu third item clicked
                Intent i = new Intent(MainActivity.this, CameraActivity.class);
                startActivityForResult(i, 1);

            }
        });

1 个答案:

答案 0 :(得分:0)

如果我正确无误,您希望将数据从 CameraActivity 传输到 MainActivity

然后你可以使用意图。

 public void onClick(View v) {
            //TODO something when floating action menu third item clicked
            Intent i = new Intent(CameraActivity.this,MainActivity);
            i.putExtra("KEY","suggestionValue");
            startActivityForResult(i, 1);
  }

然后在MainActivity上你可以像这样接收它

{
  String value = getIntent().getStringExtra("KEY");
}

如果您有兴趣在片段之间传递值,那么您可以使用 Bundle

Fragment fragment = new SomeFragment();
Bundle bundle = new Bundle();
bundle.putString(key, value);
fragment.setArguments(bundle);

然后在接收片段的onCreate中,您可以调用此

Bundle bundle = this.getArguments();
if (bundle != null) {
        int myInt = bundle.getInt(key, defaultValue);
}

我希望这清除了你对在android活动和片段中传递值的疑虑。 详细了解Bundle & Parcel