Как запустить действие и отобразить его внутри родительского действия? - PullRequest
0 голосов
/ 24 марта 2020

Вкратце: Могу ли я запустить другое действие в onCreate () моей MainActivity и отобразить вновь созданное действие в макете MainActivity?

Я хочу начать представление (DecoratedBarcodeView ) прямо в начале MainActivity. Мой макет выглядит примерно так:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.journeyapps.barcodescanner.DecoratedBarcodeView
        android:id="@+id/barcode_scanner"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_above="@+id/buttonsLayout"
        android:layout_alignParentTop="true">

    </com.journeyapps.barcodescanner.DecoratedBarcodeView>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:id="@+id/buttonsLayout"
        android:layout_toLeftOf="@+id/centerHorizont">

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Pause"
            android:onClick="pause" />

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Resume"
            android:onClick="resume" />


    </LinearLayout>
</RelativeLayout>

Я знаю, что могу начать занятие так:

Intent intent = new Intent(this, CustomActivity.class);
startActivity(intent);

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

Его метод onCreate () выглядит следующим образом:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        barcodeView = (DecoratedBarcodeView) findViewById(R.id.barcode_scanner);
        Collection<BarcodeFormat> formats = Arrays.asList(BarcodeFormat.QR_CODE, BarcodeFormat.CODE_39);
        barcodeView.getBarcodeView().setDecoderFactory(new DefaultDecoderFactory(formats));
        barcodeView.initializeFromIntent(getIntent());
        barcodeView.decodeContinuous(callback);
    }

Так что, по сути, я хочу сделать это barCodeView.decodeContinuous(callback) изнутри моей MainActivity. Но для этого мне, очевидно, нужен Intent.

Итак, каков наилучший подход для запуска Activity и отображения его внутри моей MainActivity?

...