Skip to content

Commit 74ad488

Browse files
authored
Merge pull request #6394 from TacoTheDank/androidx-fragment-134
Update AndroidX Fragment to 1.3.4
2 parents 6e377dd + a1432e9 commit 74ad488

9 files changed

Lines changed: 89 additions & 90 deletions

File tree

app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ dependencies {
198198
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
199199
implementation 'androidx.core:core-ktx:1.3.2'
200200
implementation 'androidx.documentfile:documentfile:1.0.1'
201+
implementation 'androidx.fragment:fragment-ktx:1.3.4'
201202
implementation "androidx.lifecycle:lifecycle-livedata:${androidxLifecycleVersion}"
202203
implementation "androidx.lifecycle:lifecycle-viewmodel:${androidxLifecycleVersion}"
203204
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'

app/src/main/java/org/schabi/newpipe/MainActivity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -603,6 +603,7 @@ public void onBackPressed() {
603603
public void onRequestPermissionsResult(final int requestCode,
604604
@NonNull final String[] permissions,
605605
@NonNull final int[] grantResults) {
606+
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
606607
for (final int i : grantResults) {
607608
if (i == PackageManager.PERMISSION_DENIED) {
608609
return;

app/src/main/java/org/schabi/newpipe/RouterActivity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -600,6 +600,7 @@ private void openDownloadDialog() {
600600
public void onRequestPermissionsResult(final int requestCode,
601601
@NonNull final String[] permissions,
602602
@NonNull final int[] grantResults) {
603+
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
603604
for (final int i : grantResults) {
604605
if (i == PackageManager.PERMISSION_DENIED) {
605606
finish();

app/src/main/java/org/schabi/newpipe/local/subscription/ImportConfirmationDialog.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,9 @@ public class ImportConfirmationDialog extends DialogFragment {
2323

2424
public static void show(@NonNull final Fragment fragment,
2525
@NonNull final Intent resultServiceIntent) {
26-
if (fragment.getFragmentManager() == null) {
27-
return;
28-
}
29-
3026
final ImportConfirmationDialog confirmationDialog = new ImportConfirmationDialog();
3127
confirmationDialog.setResultServiceIntent(resultServiceIntent);
32-
confirmationDialog.show(fragment.getFragmentManager(), null);
28+
confirmationDialog.show(fragment.getParentFragmentManager(), null);
3329
}
3430

3531
public void setResultServiceIntent(final Intent resultServiceIntent) {

app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionFragment.kt

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import android.view.MenuInflater
1515
import android.view.View
1616
import android.view.ViewGroup
1717
import android.widget.Toast
18+
import androidx.activity.result.ActivityResult
19+
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult
1820
import androidx.appcompat.app.AlertDialog
1921
import androidx.lifecycle.ViewModelProvider
2022
import androidx.localbroadcastmanager.content.LocalBroadcastManager
@@ -82,6 +84,11 @@ class SubscriptionFragment : BaseStateFragment<SubscriptionState>() {
8284
private lateinit var feedGroupsSortMenuItem: HeaderWithMenuItem
8385
private val subscriptionsSection = Section()
8486

87+
private val requestExportLauncher =
88+
registerForActivityResult(StartActivityForResult(), this::requestExportResult)
89+
private val requestImportLauncher =
90+
registerForActivityResult(StartActivityForResult(), this::requestImportResult)
91+
8592
@State
8693
@JvmField
8794
var itemsListState: Parcelable? = null
@@ -184,39 +191,39 @@ class SubscriptionFragment : BaseStateFragment<SubscriptionState>() {
184191
}
185192

186193
private fun onImportPreviousSelected() {
187-
startActivityForResult(StoredFileHelper.getPicker(activity), REQUEST_IMPORT_CODE)
194+
requestImportLauncher.launch(StoredFileHelper.getPicker(activity))
188195
}
189196

190197
private fun onExportSelected() {
191198
val date = SimpleDateFormat("yyyyMMddHHmm", Locale.ENGLISH).format(Date())
192199
val exportName = "newpipe_subscriptions_$date.json"
193200

194-
startActivityForResult(
195-
StoredFileHelper.getNewPicker(activity, exportName, "application/json", null),
196-
REQUEST_EXPORT_CODE
201+
requestExportLauncher.launch(
202+
StoredFileHelper.getNewPicker(activity, exportName, "application/json", null)
197203
)
198204
}
199205

200206
private fun openReorderDialog() {
201-
FeedGroupReorderDialog().show(requireFragmentManager(), null)
207+
FeedGroupReorderDialog().show(parentFragmentManager, null)
202208
}
203209

204-
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
205-
super.onActivityResult(requestCode, resultCode, data)
206-
if (data != null && data.data != null && resultCode == Activity.RESULT_OK) {
207-
if (requestCode == REQUEST_EXPORT_CODE) {
208-
activity.startService(
209-
Intent(activity, SubscriptionsExportService::class.java)
210-
.putExtra(SubscriptionsExportService.KEY_FILE_PATH, data.data)
211-
)
212-
} else if (requestCode == REQUEST_IMPORT_CODE) {
213-
ImportConfirmationDialog.show(
214-
this,
215-
Intent(activity, SubscriptionsImportService::class.java)
216-
.putExtra(KEY_MODE, PREVIOUS_EXPORT_MODE)
217-
.putExtra(KEY_VALUE, data.data)
218-
)
219-
}
210+
fun requestExportResult(result: ActivityResult) {
211+
if (result.data != null && result.resultCode == Activity.RESULT_OK) {
212+
activity.startService(
213+
Intent(activity, SubscriptionsExportService::class.java)
214+
.putExtra(SubscriptionsExportService.KEY_FILE_PATH, result.data?.data)
215+
)
216+
}
217+
}
218+
219+
fun requestImportResult(result: ActivityResult) {
220+
if (result.data != null && result.resultCode == Activity.RESULT_OK) {
221+
ImportConfirmationDialog.show(
222+
this,
223+
Intent(activity, SubscriptionsImportService::class.java)
224+
.putExtra(KEY_MODE, PREVIOUS_EXPORT_MODE)
225+
.putExtra(KEY_VALUE, result.data?.data)
226+
)
220227
}
221228
}
222229

@@ -437,9 +444,4 @@ class SubscriptionFragment : BaseStateFragment<SubscriptionState>() {
437444
val minWidth = resources.getDimensionPixelSize(R.dimen.channel_item_grid_min_width)
438445
return max(1, floor(resources.displayMetrics.widthPixels / minWidth.toDouble()).toInt())
439446
}
440-
441-
companion object {
442-
private const val REQUEST_EXPORT_CODE = 666
443-
private const val REQUEST_IMPORT_CODE = 667
444-
}
445447
}

app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionsImportFragment.java

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
import android.widget.EditText;
1313
import android.widget.TextView;
1414

15+
import androidx.activity.result.ActivityResult;
16+
import androidx.activity.result.ActivityResultLauncher;
17+
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult;
1518
import androidx.annotation.NonNull;
1619
import androidx.annotation.Nullable;
1720
import androidx.annotation.StringRes;
@@ -27,14 +30,14 @@
2730
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
2831
import org.schabi.newpipe.extractor.subscription.SubscriptionExtractor;
2932
import org.schabi.newpipe.local.subscription.services.SubscriptionsImportService;
33+
import org.schabi.newpipe.streams.io.StoredFileHelper;
3034
import org.schabi.newpipe.util.Constants;
3135
import org.schabi.newpipe.util.ServiceHelper;
3236

3337
import java.util.Collections;
3438
import java.util.List;
3539

3640
import icepick.State;
37-
import org.schabi.newpipe.streams.io.StoredFileHelper;
3841

3942
import static org.schabi.newpipe.extractor.subscription.SubscriptionExtractor.ContentSource.CHANNEL_URL;
4043
import static org.schabi.newpipe.local.subscription.services.SubscriptionsImportService.CHANNEL_URL_MODE;
@@ -43,8 +46,6 @@
4346
import static org.schabi.newpipe.local.subscription.services.SubscriptionsImportService.KEY_VALUE;
4447

4548
public class SubscriptionsImportFragment extends BaseFragment {
46-
private static final int REQUEST_IMPORT_FILE_CODE = 666;
47-
4849
@State
4950
int currentServiceId = Constants.NO_SERVICE_ID;
5051

@@ -62,6 +63,9 @@ public class SubscriptionsImportFragment extends BaseFragment {
6263
private EditText inputText;
6364
private Button inputButton;
6465

66+
private final ActivityResultLauncher<Intent> requestImportFileLauncher =
67+
registerForActivityResult(new StartActivityForResult(), this::requestImportFileResult);
68+
6569
public static SubscriptionsImportFragment getInstance(final int serviceId) {
6670
final SubscriptionsImportFragment instance = new SubscriptionsImportFragment();
6771
instance.setInitialData(serviceId);
@@ -173,22 +177,19 @@ public void onImportUrl(final String value) {
173177
}
174178

175179
public void onImportFile() {
176-
startActivityForResult(StoredFileHelper.getPicker(activity), REQUEST_IMPORT_FILE_CODE);
180+
requestImportFileLauncher.launch(StoredFileHelper.getPicker(activity));
177181
}
178182

179-
@Override
180-
public void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
181-
super.onActivityResult(requestCode, resultCode, data);
182-
if (data == null) {
183+
private void requestImportFileResult(final ActivityResult result) {
184+
if (result.getData() == null) {
183185
return;
184186
}
185187

186-
if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_IMPORT_FILE_CODE
187-
&& data.getData() != null) {
188+
if (result.getResultCode() == Activity.RESULT_OK && result.getData().getData() != null) {
188189
ImportConfirmationDialog.show(this,
189190
new Intent(activity, SubscriptionsImportService.class)
190191
.putExtra(KEY_MODE, INPUT_STREAM_MODE)
191-
.putExtra(KEY_VALUE, data.getData())
192+
.putExtra(KEY_VALUE, result.getData().getData())
192193
.putExtra(Constants.KEY_SERVICE_ID, currentServiceId));
193194
}
194195
}

app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java

Lines changed: 34 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,16 @@
22

33
import android.app.Activity;
44
import android.content.Context;
5-
import android.content.DialogInterface;
65
import android.content.Intent;
76
import android.content.SharedPreferences;
87
import android.net.Uri;
98
import android.os.Bundle;
109
import android.util.Log;
1110
import android.widget.Toast;
1211

12+
import androidx.activity.result.ActivityResult;
13+
import androidx.activity.result.ActivityResultLauncher;
14+
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult;
1315
import androidx.annotation.Nullable;
1416
import androidx.appcompat.app.AlertDialog;
1517
import androidx.core.content.ContextCompat;
@@ -40,8 +42,6 @@
4042
import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage;
4143

4244
public class ContentSettingsFragment extends BasePreferenceFragment {
43-
private static final int REQUEST_IMPORT_PATH = 8945;
44-
private static final int REQUEST_EXPORT_PATH = 30945;
4545
private static final String ZIP_MIME_TYPE = "application/zip";
4646
private static final SimpleDateFormat EXPORT_DATE_FORMAT
4747
= new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US);
@@ -56,6 +56,10 @@ public class ContentSettingsFragment extends BasePreferenceFragment {
5656
private Localization initialSelectedLocalization;
5757
private ContentCountry initialSelectedContentCountry;
5858
private String initialLanguage;
59+
private final ActivityResultLauncher<Intent> requestImportPathLauncher =
60+
registerForActivityResult(new StartActivityForResult(), this::requestImportPathResult);
61+
private final ActivityResultLauncher<Intent> requestExportPathLauncher =
62+
registerForActivityResult(new StartActivityForResult(), this::requestExportPathResult);
5963

6064
@Override
6165
public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) {
@@ -72,20 +76,18 @@ public void onCreatePreferences(final Bundle savedInstanceState, final String ro
7276

7377
final Preference importDataPreference = requirePreference(R.string.import_data);
7478
importDataPreference.setOnPreferenceClickListener((Preference p) -> {
75-
startActivityForResult(
76-
StoredFileHelper.getPicker(requireContext(), getImportExportDataUri()),
77-
REQUEST_IMPORT_PATH);
79+
requestImportPathLauncher.launch(
80+
StoredFileHelper.getPicker(requireContext(), getImportExportDataUri()));
7881
return true;
7982
});
8083

8184
final Preference exportDataPreference = requirePreference(R.string.export_data);
8285
exportDataPreference.setOnPreferenceClickListener((final Preference p) -> {
8386

84-
startActivityForResult(
87+
requestExportPathLauncher.launch(
8588
StoredFileHelper.getNewPicker(requireContext(),
8689
"NewPipeData-" + EXPORT_DATE_FORMAT.format(new Date()) + ".zip",
87-
ZIP_MIME_TYPE, getImportExportDataUri()),
88-
REQUEST_EXPORT_PATH);
90+
ZIP_MIME_TYPE, getImportExportDataUri()));
8991
return true;
9092
});
9193

@@ -157,37 +159,34 @@ public void onDestroy() {
157159
}
158160
}
159161

160-
@Override
161-
public void onActivityResult(final int requestCode,
162-
final int resultCode,
163-
@Nullable final Intent data) {
162+
private void requestExportPathResult(final ActivityResult result) {
164163
assureCorrectAppLanguage(getContext());
165-
super.onActivityResult(requestCode, resultCode, data);
166-
if (DEBUG) {
167-
Log.d(TAG, "onActivityResult() called with: "
168-
+ "requestCode = [" + requestCode + "], "
169-
+ "resultCode = [" + resultCode + "], "
170-
+ "data = [" + data + "]");
171-
}
164+
if (result.getResultCode() == Activity.RESULT_OK && result.getData() != null) {
165+
lastImportExportDataUri = result.getData().getData(); // will be saved only on success
172166

173-
if ((requestCode == REQUEST_IMPORT_PATH || requestCode == REQUEST_EXPORT_PATH)
174-
&& resultCode == Activity.RESULT_OK && data != null && data.getData() != null) {
167+
final StoredFileHelper file
168+
= new StoredFileHelper(getContext(), result.getData().getData(), ZIP_MIME_TYPE);
169+
170+
exportDatabase(file);
171+
}
172+
}
175173

176-
lastImportExportDataUri = data.getData(); // will be saved only on success
174+
private void requestImportPathResult(final ActivityResult result) {
175+
assureCorrectAppLanguage(getContext());
176+
if (result.getResultCode() == Activity.RESULT_OK && result.getData() != null) {
177+
lastImportExportDataUri = result.getData().getData(); // will be saved only on success
177178

178179
final StoredFileHelper file
179-
= new StoredFileHelper(getContext(), data.getData(), ZIP_MIME_TYPE);
180-
if (requestCode == REQUEST_EXPORT_PATH) {
181-
exportDatabase(file);
182-
} else {
183-
final AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity());
184-
builder.setMessage(R.string.override_current_data)
185-
.setPositiveButton(R.string.finish,
186-
(DialogInterface d, int id) -> importDatabase(file))
187-
.setNegativeButton(R.string.cancel,
188-
(DialogInterface d, int id) -> d.cancel());
189-
builder.create().show();
190-
}
180+
= new StoredFileHelper(getContext(), result.getData().getData(), ZIP_MIME_TYPE);
181+
182+
new AlertDialog.Builder(requireActivity())
183+
.setMessage(R.string.override_current_data)
184+
.setPositiveButton(R.string.finish, (d, id) ->
185+
importDatabase(file))
186+
.setNegativeButton(R.string.cancel, (d, id) ->
187+
d.cancel())
188+
.create()
189+
.show();
191190
}
192191
}
193192

app/src/main/java/org/schabi/newpipe/settings/tabs/ChooseTabsFragment.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,13 +192,13 @@ private void addTab(final int tabId) {
192192
final SelectKioskFragment selectKioskFragment = new SelectKioskFragment();
193193
selectKioskFragment.setOnSelectedListener((serviceId, kioskId, kioskName) ->
194194
addTab(new Tab.KioskTab(serviceId, kioskId)));
195-
selectKioskFragment.show(requireFragmentManager(), "select_kiosk");
195+
selectKioskFragment.show(getParentFragmentManager(), "select_kiosk");
196196
return;
197197
case CHANNEL:
198198
final SelectChannelFragment selectChannelFragment = new SelectChannelFragment();
199199
selectChannelFragment.setOnSelectedListener((serviceId, url, name) ->
200200
addTab(new Tab.ChannelTab(serviceId, url, name)));
201-
selectChannelFragment.show(requireFragmentManager(), "select_channel");
201+
selectChannelFragment.show(getParentFragmentManager(), "select_channel");
202202
return;
203203
case PLAYLIST:
204204
final SelectPlaylistFragment selectPlaylistFragment = new SelectPlaylistFragment();
@@ -215,7 +215,7 @@ public void onRemotePlaylistSelected(
215215
addTab(new Tab.PlaylistTab(serviceId, url, name));
216216
}
217217
});
218-
selectPlaylistFragment.show(requireFragmentManager(), "select_playlist");
218+
selectPlaylistFragment.show(getParentFragmentManager(), "select_playlist");
219219
return;
220220
default:
221221
addTab(type.getTab());

app/src/main/java/org/schabi/newpipe/util/StreamDialogEntry.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -68,16 +68,14 @@ public enum StreamDialogEntry {
6868
}), // has to be set manually
6969

7070
append_playlist(R.string.append_playlist, (fragment, item) -> {
71-
if (fragment.getFragmentManager() != null) {
72-
final PlaylistAppendDialog d = PlaylistAppendDialog
73-
.fromStreamInfoItems(Collections.singletonList(item));
74-
75-
PlaylistAppendDialog.onPlaylistFound(fragment.getContext(),
76-
() -> d.show(fragment.getFragmentManager(), "StreamDialogEntry@append_playlist"),
77-
() -> PlaylistCreationDialog.newInstance(d)
78-
.show(fragment.getFragmentManager(), "StreamDialogEntry@create_playlist")
79-
);
80-
}
71+
final PlaylistAppendDialog d = PlaylistAppendDialog
72+
.fromStreamInfoItems(Collections.singletonList(item));
73+
74+
PlaylistAppendDialog.onPlaylistFound(fragment.getContext(),
75+
() -> d.show(fragment.getParentFragmentManager(), "StreamDialogEntry@append_playlist"),
76+
() -> PlaylistCreationDialog.newInstance(d)
77+
.show(fragment.getParentFragmentManager(), "StreamDialogEntry@create_playlist")
78+
);
8179
}),
8280

8381
play_with_kodi(R.string.play_with_kodi_title, (fragment, item) -> {

0 commit comments

Comments
 (0)