1

navigation-drawerシンプルな Android アプリケーションを実行するために、Eclipse でテンプレートを使用しています。フラグメントに問題があります。マニフェストで PresenceLog Fragment というフラグメントを宣言しましたが、 で呼び出すとMainActivity、ログにはまだ

03-23 13:54:50.817: E/AndroidRuntime(16750): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.singtel.ricecooker/com.singtel.ricecooker.PresenceLogFragment}; have you declared this activity in your AndroidManifest.xml?

これが私のマニフェストです

ここに私のフラグメントクラスがあります

public class PresenceLogFragment extends Fragment{
private TextView myText = null;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    return inflater.inflate(R.layout.presence_log, null);
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    ArrayList<String> userList = null;
    RiceServerRequest newRequest = new RiceServerRequest();
    //newRequest.getRequestInfo(this);

}

public void updateUserList(ArrayList<String> userList){
    LinearLayout lView = (LinearLayout) getView().findViewById (R.layout.presence_log);
    //LinearLayout ll = (LinearLayout)fragment.getView().findViewById(R.id.commentFragmentLayout);

    for (int i = 0; i < userList.size();i++){
        myText = new TextView(getActivity());
        myText.setText(userList.get(i));
        lView.addView(myText);
    }
    //setContentView(lView);
}

ここに私のMainActivityがあります

private void launchPresenceLog(){
    Intent intent = new Intent(this,PresenceLogFragment.class);
    startActivity(intent);
}

私のコードの何が問題なのかを知っていれば、それは素晴らしいことです。また、私は Android プログラミングが初めてなので、いくつかのオンライン コースを提案していただければ幸いです。

4

8 に答える 8

2

フラグメントを作成したため、アクティビティのように呼び出すことができませんでした。コンテナ ビュー、適切には FrameLayout を Fragment に置き換える必要があります。

getSupportFragmentManager()
  .beginTransaction()
  .replace(R.id.content_frame, new PresenceLogFragment())
  .commit();
于 2015-03-23T12:46:34.763 に答える
1

Intent を介してフラグメントをロードすることはできません。次のようにフラグメント マネージャーを使用して実行する必要があります。

Fragment fragment = new PresenceLogFragment(MainActivity.this);
FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction ft = fragmentManager.beginTransaction();                
            ft.replace(R.id.yourFragmentContainer, fragment).commit();
于 2015-03-23T12:50:48.003 に答える
0
 have you declared this activity in your AndroidManifest.xml?  

マニフェストを調べ<activity>て、アクティビティが登録されている要素があるかどうかを確認します。そうでない場合は、1 つ追加します。

ここを見てください:http://developer.android.com/guide/topics/manifest/activity-element.html

于 2015-03-23T12:34:27.403 に答える
0

明らかです。

「このアクティビティを AndroidManifest.xml で宣言しましたか?」

タグがあるかどうかを確認する必要があります。</p>

これ多分これを見る

于 2015-03-23T12:43:44.817 に答える
0

マニフェスト ファイルを開いて、次のように宣言してください。

<activity
        android:name=".MainActivity" //your activity name
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

これが起動アクティビティの場合はこれを行い、そうでない場合はこれを行います

<activity
        android:name=".MainActivity"//your activity name
        android:label="@string/app_name" >
    </activity>

ファーグメントではなくアクティビティを拡張する Java ファイルの名前を入力します。その Activity java ファイルから作成される Fragment を意味します。

于 2015-03-23T12:48:12.273 に答える
0
 <activity
        android:name="com.singtel.ricecooker.PresenceLogFragment"
        android:label="@string/app_name" >
    </activity>

com.singtel.ricecooker.PresenceLogFragmentがアクティビティを表す場合、これをマニフェスト ファイルに追加し、それがフラグメントである場合は間違っています。2 番目のケースでは、以下のコードを使用します。

getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, new PresenceLogFragment())
.commit();
于 2015-03-23T12:49:24.283 に答える
0

フラグメントをアクティビティとして使用しようとしています。PresenceLogFragment の名前を PresenceLogActivity に変更して Fragment の代わりに Activity を拡張するか、フラグメントをフラグメントとして使用してみてください。

また、アプリで使用しようとするアクティビティは、マニフェストで宣言する必要があります (リンク)

フラグメントとその使用方法の詳細はこちら

于 2015-03-23T12:54:49.527 に答える
-1
Navigation.findNavController(view).navigate(R.id.youAc)
于 2021-12-22T15:23:07.237 に答える