gpt4 book ai didi

java - 从 RecyclerView Item 更新 Fragment 中的 WebView

转载 作者:行者123 更新时间:2023-12-01 23:09:43 24 4
gpt4 key购买 nike

当单击 RecyclerView 项时,我尝试更新 fragment 中的 WebView。在调试控制台中,它打印了我的硬编码 URL,但它没有更新 View - 它保留在“Google”网页上,没有任何更改,但似乎 onClickListener 正在工作。

MainActivity.java

public class MainActivity extends AppCompatActivity {

private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;

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

// Add Websites
ArrayList<Website> websitesList = new ArrayList<>();
websitesList.add(new Website(R.drawable.ic_launcher_background, "Line 1", "https://google.com/"));
websitesList.add(new Website(R.drawable.ic_launcher_background, "Line 2", "https://yahoo.com/"));
websitesList.add(new Website(R.drawable.ic_launcher_background, "Line 3", "https://abv.bg/"));

mRecyclerView = findViewById(R.id.recyclerView);
mLayoutManager = new LinearLayoutManager(this);
mAdapter = new WebsiteAdapter(websitesList);

mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setAdapter(mAdapter);
}

public void switchContent(int id, Fragment fragment) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(id, fragment);
ft.commit();
}
}

RecyclerView适配器

@Override
public void onBindViewHolder(@NonNull ExampleViewHolder holder, int position) {
final Website currentItem = mWebsiteList.get(position);

holder.mImageView.setImageResource(currentItem.getImage());
holder.mTitle.setText(currentItem.getTitle());

holder.mTitle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
fragmentJump(currentItem);
}
});
}

@Override
public int getItemCount() {
return mWebsiteList.size();
}

private void fragmentJump(Website mItemSelected) {
Fragment mFragment = new WebsiteView();
Bundle mBundle = new Bundle();
mBundle.putString("url", "http://facebook.com/");
mFragment.setArguments(mBundle);
switchContent(R.id.fragment, mFragment);
}

public void switchContent(int id, Fragment fragment) {
if (mContext == null)
return;
if (mContext instanceof MainActivity) {
MainActivity mainActivity = (MainActivity) mContext;
mainActivity.switchContent(id, fragment);
}

}

WebView fragment

private WebView webView;
String mUrl;

public WebsiteView() {}

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

try {
mUrl = getArguments().getString("url");
} catch(Exception ex) {
System.out.println(ex.toString());
mUrl = "http://google.com/";
}

System.out.println(mUrl);

webView = v.findViewById(R.id.webView);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl(mUrl);

return v;
}

最佳答案

好吧,看来我实际上是在尝试更新 fragment 数据,当我用所需的 fragment 替换另一个 fragment 时,它就可以工作了。关于如何更新 fragment 中的 WebView 有什么想法吗?

关于java - 从 RecyclerView Item 更新 Fragment 中的 WebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58381738/

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