2012-02-22 9 views
18

Im używając fragmentu, który ma wyświetlać przeglądarkę internetową. Kiedy próbuję utworzyć instancję z klasy, która go używa, otrzymuję następujące ostrzeżenie w logcat.android - czy kiedykolwiek będziesz musiał dodać fragmenty do manifestu

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 po prostu nauczenie się fragmenty i Ive nigdy nie próbował deklarując je w mój manifest, a ja nie widziałem nigdzie mówi ci to zrobić.

Oto klasa 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: dodawanie WebFrag jako działalność do manifestu powoduje następujący błąd

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: Herezje główny fragmentactivity gdzie im próbuje użyć mojej klasie

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


    } 
    }); 
} 
} 

Odpowiedz

29

No don dodaj go do swojego manifestu. Nigdy nie musisz dodawać fragmentów do manifestu.

Czy tworzysz intencję gdzieś, aby uruchomić WebActivity? W jaki sposób zostaje przeniesiony na ekran, prawdopodobnie tam, gdzie leży twój problem.

EDIT

To jest twój problem:

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

Nie możesz rozpocząć fragment jako działania, będziesz musiał zawinąć fragment w działalność, która rozciąga FragmentActivity

+0

Tak, byłem pewien, że tego nie robisz. Zwalniam moją drugą klasę tam, gdzie myślałem, że jej używam. –

+0

Owijanie fragmentu oznacza tworzenie fragmentaryczności rozszerzającej moją klasę WebFrag? –

+1

Nie można utworzyć "WebActivity", która rozszerza FragmentActivity. Następnie w układzie xml dla WebActivity dodajesz fragment, np. Blundell

Powiązane problemy