gpt4 book ai didi

java - 从其他 Activity 通知 fragment

转载 作者:行者123 更新时间:2023-12-02 10:05:46 25 4
gpt4 key购买 nike

在我的应用程序中,我使用 Fragments 来显示一些基于位置的数据。在我的 MainActivity 中获取用户当前位置的信息,Fragment 使用这些坐标继续操作。我的问题是,如何让这两个类一起工作:当我现在使用它时,Fragment 一旦它尝试访问 MainActivity 中的位置数据已打开,无论该位置是否已获取。如何获取位置并随后通知 Fragment 以便它知道它可以继续执行其代码并正确访问坐标?或者整个程序被认为是错误的并且此类问题的处理方式不同?

这是我的MainActivity的想法:

public class MainActivity extends AppCompatActivity {

public static Double lat;
public static Double lon;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

showLocation();

}

private void showLocation() {
//Grab Location
if (location != null) {
lat = location.getLatitude();
lon = location.getLongitude();
}

}

这是我的Fragment的想法:

public class FragmentA extends Fragment {

public FragmentA() {
// Required empty public constructor
}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_a, container, false);


return view;
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

}

public void start(){
if (MainActivity.lat != null && MainActivity.lon != null) {
lat = MainActivity.lat;
lon = MainActivity.lon;

//proceed with location data
} else {

}

}

}

最佳答案

您可以从 Activity 中找到您想要访问的 Fragment。

您可以在它膨胀的容器 (xml) 中查找它:

((FragmentA) getSupportFragmentManager().findFragmentById(R.id.yourContainer))

您可以通过加载时分配的标签在堆栈中搜索 fragment :

// First load your fragment
getSupportFragmentManager().beginTransaction()
.replace(R.id.yourContainer, fragment, "yourFragmentTag")
.addToBackStack(null)
.commit()

// Then you can access it
((FragmentA) getSupportFragmentManager().findFragmentByTag("yourFragmentTag"))

要从 Fragment 访问 Activity,您可以使用接口(interface),如本 answer 中所述。 .

祝你好运!

关于java - 从其他 Activity 通知 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55344568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com