私はウェブビューを表示することになっているフラグメントを使用しています。それを使用するクラスからインスタンス化しようとすると、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?
私はフラグメントの使用方法を学んでいるだけで、マニフェストでフラグメントを宣言しようとしたことは一度もありません。
Heresは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
編集:イムが私のクラスを使用しようとしている主要なフラグメントアクティビティをここに示します
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();
}
}
});
}
}
いいえ、マニフェストに追加しないでください。マニフェストにフラグメントを追加する必要はありません。
WebActivityを開始するインテントをどこかに作成しますか?それはどのように画面に表示されますか、それはおそらくあなたの問題がある場所です。
[〜#〜]編集[〜#〜]
これはあなたの問題です:
Intent showContent = new Intent(getApplicationContext(),
WebFrag.class);
startActivity(showContent);
フラグメントをアクティビティとして開始することはできません。フラグメントを拡張するアクティビティにラップする必要があります FragmentActivity
アクティビティからフラグメントに戻りたい場合は、これを試してください
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();
}
});