J'utilise un fragment censé afficher une vue Web. Lorsque j'essaie de l'instancier à partir de la classe qui l'utilise, j'obtiens l'avertissement suivant dans mon 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?
Je viens d'apprendre à utiliser des fragments et je n'ai jamais essayé de les déclarer dans mon manifeste et je n'ai vu nulle part vous le dire.
Voici la classe 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: l'ajout de WebFrag en tant qu'activité au manifeste provoque l'erreur suivante
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: Heres la principale fragmentactivity où Im essayant d'utiliser ma classe
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();
}
}
});
}
}
Non, ne l'ajoutez pas à votre manifeste. Vous n'avez jamais besoin d'ajouter des fragments à votre manifeste.
Créez-vous une intention quelque part pour démarrer la WebActivity? Comment est-il porté à l'écran, c'est probablement là que réside votre problème.
[~ # ~] modifier [~ # ~]
Voici votre problème:
Intent showContent = new Intent(getApplicationContext(),
WebFrag.class);
startActivity(showContent);
Vous ne pouvez pas démarrer un fragment en tant qu'activité, vous devrez envelopper le fragment dans une activité qui s'étend FragmentActivity
si vous voulez revenir de l'activité au fragment, essayez ceci
proToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Remarque: vous devez donner un identifiant à la présentation principale de votre activité, par exemple: 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();
}
});