0

Я использую шаблон navigation-drawer в eclipse, чтобы сделать простое приложение для Android. У меня есть некоторые проблемы с фрагментом. я объявил фрагмент под названием PresenceLog Фрагмент в манифесте, но когда я назвал его в MainActivity, журнал до сих пор говорит, чтоИсключение для Android-фрагмента: активность не найдена

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

Это моя основная информация

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

Было бы здорово, если бы вы знали, что не так с моим кодом. Кроме того, поскольку я новичок в программировании на Android, я был бы признателен, если бы вы предложили некоторые онлайн-курсы.

+0

вы не добавили добавляемые активность в вашем файл манифеста – ashutiwari4

+0

Курс: https://www.udacity.com/course/ud853 –

+0

@ ashutiwari4 Он пытается запустить ФРАГМЕНТ, используя INTENT в качестве ДЕЯТЕЛЬНОСТИ. Это совершенно неверно, см. Https://developer.android.com/training/basics/fragments/creating.html – EpicPandaForce

ответ

1

Вы создали фрагмент, чтобы вы не могли бы назвать это как операцию. Вам необходимо заменить вид контейнера, правильно FrameLayout с вашим фрагментом.

getSupportFragmentManager() 
    .beginTransaction() 
    .replace(R.id.content_frame, new PresenceLogFragment()) 
    .commit(); 
0
have you declared this activity in your AndroidManifest.xml? 

Посмотрите в манифесте и посмотреть, если у вас есть <activity> элемент, который имеет вашу активность зарегистрирован. Если нет, добавьте один.

Посмотрите здесь: http://developer.android.com/guide/topics/manifest/activity-element.html

0

это понятно.

«Вы заявили об этом в своем AndroidManifest.xml?»

вы должны проверить, является ли тег.

see this или maybe this

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> 

если это ваша Lauch активность, то сделать это иначе сделать этот

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

введите имя файла Java который расширяет деятельность, а не меру. Означает фрагмент, который создается из этого java-файла Activity.

0
<activity 
     android:name="com.singtel.ricecooker.PresenceLogFragment" 
     android:label="@string/app_name" > 
    </activity> 

добавить это в файл манифеста, если com.singtel.ricecooker.PresenceLogFragment представляет собой деятельность, и если это фрагмент, то вы делаете это неправильно. во втором случае используется код ниже,

getSupportFragmentManager() 
.beginTransaction() 
.replace(R.id.content_frame, new PresenceLogFragment()) 
.commit(); 
1

Вы не можете загрузить фрагмент с помощью намерения.Вы должны сделать это с помощью диспетчера фрагментов таким образом:

Fragment fragment = new PresenceLogFragment(MainActivity.this); 
FragmentManager fragmentManager = getFragmentManager(); 
      FragmentTransaction ft = fragmentManager.beginTransaction();     
      ft.replace(R.id.yourFragmentContainer, fragment).commit(); 
0

Вы пытаетесь использовать фрагмент в качестве активности. Вы можете переименовать PresenceLogFragment в PresenceLogActivity и продлить действие вместо фрагмента или попробовать и использовать фрагмент как фрагмент.

Кроме того, любая деятельность, вы пытаетесь использовать в вашем приложении должен быть объявлен в проявленном (link)

Подробнее о фрагментах и ​​как использовать их here

Смежные вопросы