Активность открывается при вызове startActivity - PullRequest
0 голосов
/ 20 марта 2019

У меня есть MainActivity. В этом упражнении я получил фрагмент, у которого есть listView. При нажатии на элемент в этом списке просмотра я делаю это:

startActivity(new Intent(v.getContext(), CategoryActivity.class));

это прекрасно работает, так как запускает мой CategoryActivity.class , но сначала запускает MainActivity снова и только после этого открывает мой CategoryActivity. Я не понимаю, почему это происходит. Поэтому теперь, когда я нажимаю кнопку в моем CategoryActivity, я добираюсь до своего MainActivity, и я могу снова нажать кнопку и снова вернуться к MainActivity.

Есть мысли о том, почему это могло произойти?

Редактировать: мой код клика

storeListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
     @Override
     public void onItemClick(AdapterView<?> adapter, View view, int position, long arg) {

         // some irrelevant code

         final View v = view;

         final IQueryResult<IStoreItemConfiguration> itemConfigs = new IQueryResult<IStoreItemConfiguration>() {
             @Override
             public void result(List<IStoreItemConfiguration> results) {

                 // some code

                 startActivity(new Intent(v.getContext(), CategoryActivity.class));
             }
         }
    }
}

Редактировать: соответствующая часть моего манифеста

    <activity
        android:name=".activities.MainActivity"
        android:screenOrientation="portrait">
    </activity>
    <activity
        android:name=".activities.AuthenticationActivity"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".activities.CategoryActivity"
        android:label="@string/title_activity_category"
        android:parentActivityName=".activities.MainActivity"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme" />

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

Лучший способ вызова Activity из класса Fragment - это сделать interface во Fragment и добавить метод onItemClick() в этом интерфейсе. Теперь примените его к своему первому занятию и назовите второе занятие оттуда.

Если вы хотите позвонить с вашего фрагмента, вы можете использовать этот метод.

public class **YourFragmentClass** extends Fragment {

    Context context; //Declare the variable context

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

    //Pass your layout xml to the inflater and assign it to rootView.
      View rootView = inflater.inflate(R.layout.**yourfragmentxml**, container, false); 
            context = rootView.getContext(); // Assign your rootView to context

            Button **yourButton** = (Button) rootView.findViewById(R.id.**your_button_id**);
            **yourButton**.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //Pass the context and the Activity class you need to open from the Fragment Class, to the Intent
                    Intent intent = new Intent(context, **YourActivityClass**.class); 
                    startActivity(intent);
                }
            });
            return rootView;
        }
    }
0 голосов
/ 20 марта 2019
startActivity(new Intent(getActivity(), CategoryActivity.class));

в onBackPressed() положить finish() или finishAffinity(), как вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...