2012-02-22 45 views
18

Im使用应该显示一个webview的片段。当我尝试从使用它的类中实例化它时,我在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 ComponentInfo{get.scanner/get.scanner.WebFrag}: java.lang.ClassCastException: get.scanner.WebFrag 

编辑:继承人的主要fragmentactivity哪里我试着用我的类

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(); 
    } 


    } 
    }); 
} 
} 

回答

29

无别不要将它添加到你的清单。你永远不需要添加片段到你的清单。

您是否在某处启动了WebActivity?它是如何进入屏幕的,这可能是你的问题所在。

编辑

这是你的问题:

Intent showContent = new Intent(getApplicationContext(), 
      WebFrag.class); 
startActivity(showContent); 

您不能启动片段作为一项活动,你必须包裹片段扩展FragmentActivity

的活动
+0

是的,我很确定你不这样做。我发布我的其他课,我认为我正在使用它。 – 2012-02-22 08:31:00

+0

通过包装这个片段,你的意思是创建一个扩展我的WebFrag类的fragmentactivity? – 2012-02-22 08:41:44

+1

不,你会创建一个扩展FragmentActivity的'WebActivity'。然后在WebActivity的xml布局中,您将添加您的片段,即 Blundell 2012-02-22 08:43:35