android - 您是不是必须向清单中添加片段
Posted
技术标签:
【中文标题】android - 您是不是必须向清单中添加片段【英文标题】:android - do you ever have to add fragments to the manifestandroid - 您是否必须向清单中添加片段 【发布时间】:2012-03-12 13:00:43 【问题描述】:我正在使用应该显示 web 视图的片段。当我尝试从使用它的类中实例化它时,我在 logcat 中收到以下警告。
02-21 23:26:46.843: W/System.err(32468): android.content.ActivityNotFoundException: Unable to find explicit activity class get.scanner/get.scanner.WebFrag; have you declared this activity in your AndroidManifest.xml?
我只是在学习如何使用片段,我从未尝试在我的清单中声明它们,我还没有看到任何地方告诉你这样做。
这是 WebFrag 类。
public class WebFrag extends Fragment
private WebView viewer = null;
// if we weren't just using the compat library, we could use WebViewFragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
viewer = (WebView) inflater
.inflate(R.layout.webview, container, false);
WebSettings settings = viewer.getSettings();
settings.setjavascriptEnabled(true);
settings.setDefaultZoom(ZoomDensity.FAR);
return viewer;
@Override
public void onPause()
if (viewer != null)
viewer.onPause();
super.onPause();
@Override
public void onResume()
super.onResume();
if (viewer != null)
viewer.onResume();
public void updateUrl(String newUrl)
if (viewer != null)
viewer.loadUrl(newUrl);
编辑:将 WebFrag 作为活动添加到清单会导致以下错误
02-22 00:17:55.711: E/AndroidRuntime(2524): java.lang.RuntimeException: Unable to instantiate activity ComponentInfoget.scanner/get.scanner.WebFrag: java.lang.ClassCastException: get.scanner.WebFrag
编辑:这是我尝试使用我的课程的主要片段活动
public class GetScannerActivity extends FragmentActivity
private String mUrl = "http://www.yahoo.com/";
Button scanButton;
Button paint;
Button compTrans;
String yurl = "http://www.yahoo.com/";
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
compTrans = (Button) findViewById(R.id.checkCurrentDeals);
compTrans.setOnClickListener(new OnClickListener()
@Override
public void onClick(View arg0)
// TODO Auto-generated method stub
WebFrag viewer = (WebFrag) getSupportFragmentManager()
.findFragmentById(R.id.web_frag);
try
if (viewer == null || !viewer.isInLayout())
Intent showContent = new Intent(getApplicationContext(),
WebFrag.class);
showContent.setData(Uri.parse(yurl));
try
startActivity(showContent);
catch(ActivityNotFoundException e)
e.printStackTrace();
else
viewer.updateUrl(yurl);
catch(Exception e)
e.printStackTrace();
);
【问题讨论】:
【参考方案1】:不,不要将其添加到您的清单中。您永远不需要向清单中添加片段。
你是否在某个地方创建了一个 Intent 来启动 WebActivity?它是如何被带到屏幕上的,这可能是你的问题所在。
编辑
这是你的问题:
Intent showContent = new Intent(getApplicationContext(),
WebFrag.class);
startActivity(showContent);
您不能将 Fragment 作为 Activity 启动,您必须将 Fragment 包装在扩展 FragmentActivity 的 Activity 中
【讨论】:
是的,我很确定你不会那样做。我会在我认为我正在使用它的地方发布我的其他课程。 包装片段是否意味着创建一个扩展我的 WebFrag 类的片段活动? 不,您将创建一个扩展 FragmentActivity 的“WebActivity”。然后在 WebActivity 的 xml 布局中,您将添加您的片段,即Log.d("","");
行,看看它是否正在加载但未显示。【参考方案2】:
如果你想从活动返回到 Fragment,试试这个
proToolbar.setNavigationOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
//注意:您必须为您的活动的主布局提供一个ID,例如:searchVehicles
((ConstraintLayout) findViewById(R.id.searchVehicles)).removeAllViews();
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragment_nearby_vehicles fnv = new fragment_nearby_vehicles();
fragmentTransaction.add(R.id.searchVehicles, fnv).commit();
);
【讨论】:
以上是关于android - 您是不是必须向清单中添加片段的主要内容,如果未能解决你的问题,请参考以下文章