2012-02-22 19 views
18

Estoy usando un fragmento que se supone que muestra una vista web. Cuando intento instanciarlo de la clase que lo usa, aparece la siguiente advertencia en mi logcat.android: ¿alguna vez tiene que agregar fragmentos al manifiesto

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? 

Im sólo aprender a usar fragmentos y nunca he intentado declarar en mi manifiesto y que no he visto en cualquier lugar que le dice que lo haga.

Aquí está la clase 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); 
    } 
} 
} 

EDIT: la adición de WebFrag como una actividad para el manifiesto hace que el siguiente error

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 

EDIT: Aquí está la fragmentactivity principal donde Im tratando de usar mi clase

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


    } 
    }); 
} 
} 

Respuesta

29

Sin Don Añádelo a tu manifiesto. Nunca necesita agregar fragmentos a su manifiesto.

¿Creas un Intento en algún lugar para iniciar la WebActivity? Cómo se lleva a la pantalla, es probable que allí se encuentre tu problema.

EDITAR

Este es el problema:

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

No se puede iniciar un Fragmento como una actividad, que tendrá que envuelva el fragmento en una actividad que se extiende FragmentActivity

+0

Sí, estaba bastante seguro de que no haces eso. Voy a publicar mi otra clase donde pensé que la estaba usando. –

+0

Al envolver el fragmento, ¿quiere decir crear una fragmentación que amplíe mi clase de WebFrag? –

+1

No, crearía una 'Actividad web' que amplía FragmentActivity. Luego, en el diseño xml para WebActivity agregaría su fragmento, es decir, Blundell

Cuestiones relacionadas