[解決済み] フラグメントからアクティビティを開始する
質問
2つのフラグメントがあり、両方のフラグメントにボタンがあります。ボタンを押すと、新しいアクティビティを開始したいと思います。しかし、うまくいきません。
エラーは ここでERROR。型の不一致:mFragmentFavoriteからFragmentに変換できない
何が間違っているのでしょうか?
MyFragmentPagerAdapter
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
public class MyFragmentPagerAdapter extends FragmentPagerAdapter{
final int PAGE_COUNT = 3;
/** Constructor of the class */
public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
/** This method will be invoked when a page is requested to create */
@Override
public Fragment getItem(int arg0) {
switch(arg0){
case 0:
return new FavoriteActivity();
//ERROR: Type mismatch: cannot convert from FavoriteActivity to Fragment
case 1:
return new SettingsActivity();
default:
return null;
}
}
/** Returns the number of pages */
@Override
public int getCount() {
return PAGE_COUNT;
}
}
お気に入りアクティビティ
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
public class FavoriteActivity extends Activity{
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.main_favorite, container, false);
OnClickListener listnr=new OnClickListener() {
@Override
public void onClick(View v) {
Intent i= new Intent("aFavorite");
startActivity(i);
}
};
Button btn =(Button) v.findViewById(R.id.mainFavorite);
btn.setOnClickListener(listnr);
return v;
}
}
FavoriteActivityがfragmentsを拡張すると、エラーはなくなりますが、その後に、以下の場所でエラーが発生します。
findViewById(R.id.mainFavorite);
であり、そのエラーは
メソッド findViewById(int) is undefined for the type お気に入りアクティビティ
EDITです。
フラグメントのボタンを押してアクティビティを開始すると、アプリがクラッシュします。 これは私のログキャットです
03-18 16:01:23.985: E/AndroidRuntime(1985): FATAL EXCEPTION: main
03-18 16:01:23.985: E/AndroidRuntime(1985): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=FavoriteActivityList }
03-18 16:01:23.985: E/AndroidRuntime(1985): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1569)
03-18 16:01:23.985: E/AndroidRuntime(1985): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1420)
03-18 16:01:23.985: E/AndroidRuntime(1985): at android.app.Activity.startActivityForResult(Activity.java:3446)
03-18 16:01:23.985: E/AndroidRuntime(1985): at android.app.Activity.startActivityForResult(Activity.java:3407)
03-18 16:01:23.985: E/AndroidRuntime(1985): at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:826)
03-18 16:01:23.985: E/AndroidRuntime(1985): at android.support.v4.app.Fragment.startActivity(Fragment.java:838)
03-18 16:01:23.985: E/AndroidRuntime(1985): at com.example.spui.FavoriteActivity$1.onClick(FavoriteActivity.java:24)
03-18 16:01:23.985: E/AndroidRuntime(1985): at android.view.View.performClick(View.java:4211)
03-18 16:01:23.985: E/AndroidRuntime(1985): at android.view.View$PerformClick.run(View.java:17267)
03-18 16:01:23.985: E/AndroidRuntime(1985): at android.os.Handler.handleCallback(Handler.java:615)
03-18 16:01:23.985: E/AndroidRuntime(1985): at android.os.Handler.dispatchMessage(Handler.java:92)
03-18 16:01:23.985: E/AndroidRuntime(1985): at android.os.Looper.loop(Looper.java:137)
03-18 16:01:23.985: E/AndroidRuntime(1985): at android.app.ActivityThread.main(ActivityThread.java:4898)
03-18 16:01:23.985: E/AndroidRuntime(1985): at java.lang.reflect.Method.invokeNative(Native Method)
03-18 16:01:23.985: E/AndroidRuntime(1985): at java.lang.reflect.Method.invoke(Method.java:511)
03-18 16:01:23.985: E/AndroidRuntime(1985): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
03-18 16:01:23.985: E/AndroidRuntime(1985): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
03-18 16:01:23.985: E/AndroidRuntime(1985): at dalvik.system.NativeStart.main(Native Method)
解決方法は?
mFragmentFavorite
は、あなたのコードにある
FragmentActivity
とは異なるものです。
Fragment
. そのため、型の不一致が発生するのです。また
new
の上に
Activity
というのも、これは適切な開始方法ではないからです。
の新しいインスタンスを開始したい場合、そのインスタンスは
mFragmentFavorite
を使用すると
Intent
.
からの
Fragment
:
Intent intent = new Intent(getActivity(), mFragmentFavorite.class);
startActivity(intent);
からの
Activity
Intent intent = new Intent(this, mFragmentFavorite.class);
startActivity(intent);
を開始したい場合
aFavorite
の代わりに
mFragmentFavorite
の場合は、作成した
Intent
.
また、クラス名をより正確なものに変更することをお勧めします。 何かを呼び出す
mFragmentFavorite
というのは不適切です。
Fragment
を使用します。 また、Javaのクラス宣言は通常、大文字で始まります。 次のようなクラス名をつけるとよいでしょう。
FavoriteActivity
を使えば、より正確で、言語の慣習に従ったものになります。 また、Javaではクラス名とファイル名を一致させる必要があるため、この作業を行う場合はFavoriteActivity.javaにファイル名を変更する必要があります。
アップデイト
また、実際には
mFragmentFavorite
にすることで
Fragment
ではなく
FragmentActivity
を使用することに基づいています。
onCreateView
. もし
mFragmentFavorite
になるように
Fragment
であれば、次の行を変更してください。
public class mFragmentFavorite extends FragmentActivity{
これを代わりに読ませる。
public class mFragmentFavorite extends Fragment {
関連
-
[解決済み】Android Intent コンストラクタを解決できない
-
[解決済み】Androidエミュレータのエラーメッセージ。"PANIC: Missing emulator engine program for 'x86' CPUS." (パニック: エミュレータ・エンジン・プログラムがありません)
-
[解決済み】Dalvikとdalvik-cacheとは何ですか?
-
[解決済み】Android Studio。adbバージョン」の結果を取得できない
-
[解決済み】リストビューにonclicklistenerを追加する(android)
-
[解決済み] Android Fragment onAttach() 非推奨
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] Androidのローテーションでアクティビティを再開する
-
[解決済み] FragmentでonActivityResultが呼び出されない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】このアクティビティでは、Theme.AppCompatテーマ(またはその子孫)を使用する必要があります。
-
[解決済み】Android Studioでパラメータ化されたユニットテストを実行すると、指定されたインクルードに対するテストが見つからないエラーが発生する
-
[解決済み】「ArrayAdapterはリソースIDがTextViewであることが必要」XMLの問題点
-
[解決済み】コンテンツには、id属性が「android.R.id.list」であるListViewが必要です。
-
[解決済み】Dalvikとdalvik-cacheとは何ですか?
-
[解決済み] 設定 ':classpath' の依存関係をすべて解決できなかった。
-
[解決済み】Android Studioの初回起動。Android SDKアドオンリストにアクセスできない
-
[解決済み】Android Studioでused import文がunused import文に指定されるのはなぜ?
-
[解決済み】フラグメントMyFragmentがアクティビティにアタッチされない。
-
[解決済み】'dependencies' を '(groovy.lang.Closure)' に適用できない。)