Android: бывший фрагмент соединения приводит к сбоям в новой IDEAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android: бывший фрагмент соединения приводит к сбоям в новой IDE

Сообщение Anonymous »

Это старый код. Я пытаюсь перейти на Androidx в более или менее принудительном порядке, поскольку Google удалил старый exoplayer из Интернета, и поэтому я вынужден перенести его как более старую версию. не будет собираться даже с устаревшим SDK. Он компилировался и запускался ранее (и работает уже несколько лет; я использую APK на текущем Pixel), но после просмотра всех старых библиотек совместимости и замены их на AndroidX, IDE не примет его, поскольку он выиграл 'не позволю мне вернуть два возможных намерения в зависимости от вызывающих аргументов. Попытка явного приведения возвращаемых значений к типу также не работает (IDE жалуется, что это невозможно)

Код: Выделить всё

public class DisplayImage extends SingleFragmentActivity {
private static final String EXTRA_HOST = "net.cudasystems.android.homedaemon_mcp.host";
private static final String EXTRA_LOCATION = "net.cudasystems.android.homedaemon_mcp.location";
private static final String EXTRA_NAME = "net.cudasystems.android.homedaemon_mcp.name";
private static final String EXTRA_VIDEO = "net.cudasystems.android.homedaemon_mcp.video";

protected static Intent newIntent(Context packageContext, String Host, String Location, String Name, String Video) {
Intent intent = new Intent(packageContext, DisplayImage.class);
Bundle extras = new Bundle();
extras.putString(EXTRA_HOST, Host);
extras.putString(EXTRA_LOCATION, Location);
extras.putString(EXTRA_NAME, Name);
extras.putString(EXTRA_VIDEO, Video);
intent.putExtras(extras);
return intent;
}

@Override
protected ConnectionFragment createFragment() {
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
String Host = extras.getString(EXTRA_HOST);
String Location = extras.getString(EXTRA_LOCATION);
String Name = extras.getString(EXTRA_NAME);
String Video = extras.getString(EXTRA_VIDEO);
if ((Video != null) && (Video.length() > 0)) {
return DisplayVideoExoPlayerFragment.newInstance(Host, Location, Name);
} else {
return DisplayImageFragment.newInstance(Host, Location, Name);
}
}
return null;    // It better not!
}
Этот конкретный фрагмент вызывается с двумя возможными наборами аргументов; один запрашивает изображение, а второй запрашивает видео. Оба входят в один и тот же проигрыватель, который исторически работал нормально, но теперь IDE считает, что это неприемлемо.
То, что он утверждает, что хочет для возвращаемого типа, - это еще один SingleFragmentActivity, который запускает основной приложение; этот код находится здесь и не содержит помеченных ошибок; два других, на которые жалуются, — это вызовы для отображения вещей (от которых, конечно, можно отказаться):

Код: Выделить всё

public class HomeDaemonActivity extends SingleFragmentActivity {

private static final String EXTRA_HOST = "net.cudasystems.android.homedaemon_mcp.hostname";
private static final String EXTRA_NAME = "net.cudasystems.android.homedaemon_mcp.name";

public static Intent newIntent(Context packageContext, String Hostname, String Name) {
Intent intent = new Intent(packageContext, HomeDaemonActivity.class);
intent.putExtra(EXTRA_HOST, Hostname);
intent.putExtra(EXTRA_NAME, Name);
return intent;
}

@Override
protected HomeDaemonFragment createFragment() {
String Host = (String) getIntent()
.getSerializableExtra(EXTRA_HOST);
String Name = (String) getIntent()
.getSerializableExtra(EXTRA_NAME);
return HomeDaemonFragment.newInstance(Host, Name);

}

}
Нужно ли мне полностью реорганизовать код на верхнем уровне, где он вызывается, или есть способ привести возвращаемый результат так, чтобы был принят предыдущий код?
Заранее спасибо.
Это возвращает «Несовместимые типы» для обоих вышеупомянутых вызовов «Display», которые являются фактическими фрагментами, которые мне нужно создать (в зависимости от аргументы конечно.)

Подробнее здесь: https://stackoverflow.com/questions/790 ... -newer-ide
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»