如何在Android中的片段和活动之间共享数据

时间:2020-05-31 10:08:48

标签: java android oop object

我是android的新手。
任何人都可以告诉我是否可以使用Java接口在活动和片段之间共享数据。我已经研究过OOP,但仍然停留在接口和抽象类中。我认为,如果我在许多活动上实现一个类,我将能够共享数据,例如从一个活动传递数据并从另一个活动获取数据。
我对吗?请帮助我

3 个答案:

答案 0 :(得分:1)

对于活动之间,您可以输入如下的额外值:

Intent intent = new Intent (this, newActivity.class);
intent.putExtra("someKey", someValue);
intent.putExtra(bundle);
startActivity(intent);

要在活动中获取它,

getIntent().getExtra("someKey");

对于在片段之间移动值,我建议使用捆绑包:

//Where mainlayout is the top level id of your xml layout and R.id.viewProfile is the id of the action within your navigation xml.
       NavController navController = Navigation.findNavController(getActivity(), R.id.mainlayout);
                                    Bundle bundle = new Bundle();
                                    bundle.putString("uid",snapshot.getKey());
                                    navController.navigate(R.id.viewProfile,bundle);

在片段中检索此值:

String game = getArguments().getString("game");

希望有帮助。

答案 1 :(得分:0)

使用意图,它们使用putExtra()和getExtra()传递和接收信息,或者,当使用jetpack导航库时,也可以将它们作为NavArgs()传递。

intents in java

navigation

答案 2 :(得分:0)

Android具有用于在活动和片段中设置和获取数据的标准

在活动之间发送数据

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
Bundle b = new Bundle();
b.putInt("YOUR_INT", 1);
b.putString("YOUR_STRING", "Hello");
intent.putExtras(b);
startActivity(intent);

要将数据发送到活动中的片段

// Declare a static method on your fragment 'New Instance'
public static MyFragment newInstance(int yourInt, String yourString) {
    MyFragment myFragment = new MyFragment();

    Bundle args = new Bundle();
    args.putInt("YOUR_INT_KEY", yourInt);
    args.putString("YOUR_STRING_KEY", yourString);
    myFragment.setArguments(args);

    return myFragment;
}

// Get the data inside your fragment
getArguments().getInt("YOUR_INT_KEY", 0); //Default value is zero if no int was found


// Instantiate your fragment wherever
MyFragment f = MyFragment.newInstance(1, "Hello");