Вкладки> фрагменты с разным макетом + действия - PullRequest
0 голосов
/ 07 июня 2019

Я новичок в android studio / java language.
Мне нужно установить довольно простое приложение, но информация, которую я нахожу, не позволяет мне решить проблему.
Может ли кто-нибудь из вас помочь:)?

Я хочу создать приложение с 3 вкладками

  • (первая вкладка) пользователь вводит десятичное число, а после нажатия кнопкиКнопка Результат показывает значение, рассчитанное с помощью формулы

  • (вторая вкладка) То же, что и первая вкладка, но со значениями и формулами

  • (третья вкладка) информация о каждой формуле

Я реализовал (для этого упрощенного) код для первой вкладки.

Я знаю, как кодировать все три вкладки по отдельности, но Я не знаю, как объединить их в одно приложение с 3 вкладками.

Я начал с tabs-template, указанного в Android Studio, но он требует, чтобы все tablayout были одинаковыми.Я видел много ответов о том, как использовать разные макеты для каждой вкладки, но как мне кодировать разные вкладки (например, setonclicklistener).

Вторая проблема заключается в том, что в каждом решении используется Android, а у меня androidx, поэтому импорт не займет.И в зависимостях я не нахожу дизайн V7 или что-то в этом роде.


Mainactivity.java:

package com.example.soloapp;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.text.DecimalFormat;

public class MainActivity extends AppCompatActivity {
    DecimalFormat numberFormat = new DecimalFormat("#.0");

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button calcButton = (Button) findViewById(R.id.calcButton);
        calcButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view){
                EditText editNum = (EditText) findViewById(R.id.editNum);
                TextView resultTextView = (TextView) findViewById(R.id.resultTextView);

                double cysC = Double.parseDouble(editNum.getText().toString());
                double tempResult = Math.pow(cysC,-0.931);
                double resultLong = 70.69 * tempResult;
                String result = numberFormat.format(resultLong);
                resultTextView.setText(result);

            }


        });

    }
}

activy_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/editNum"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        android:ems="10"
        android:inputType="numberDecimal"
        app:layout_constraintBottom_toTopOf="@+id/resultTextView"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/resultTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="168dp"
        android:text="Result"
        app:layout_constraintBottom_toTopOf="@+id/calcButton"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <Button
        android:id="@+id/calcButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="200dp"
        android:text="CALCULATE"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

1 Ответ

1 голос
/ 07 июня 2019

Я добавлю то, что вам нужно выучить, чтобы создать то, что вы сказали.

  1. Вам нужно использовать ViewPager в Android для создания пролистываемых вкладок.(Если вы знаете, что такое WhatsApp, эти три перелистываемые вкладки: ViewPager).

    Подробнее о ViewPager можно узнать здесь .

  2. Для использования ViewPagers вам необходимо узнать, что такое Fragments, Fragments в Android - это небольшие действия (но не действия).Вы встраиваете эти Fragments в свои Activities, поэтому вам нужно поместить эти Fragments в Activity, который содержит ваши ViewPager.

Вы можете узнать о фрагментах здесь .

Хотя первой ссылки ViewPager будет достаточно для изучения всего, что вам нужно узнать о создании Swipeable Tabs.

О вторая проблема , которую вы упомянули.

Согласно Миграция на AndroidX ,

Androidx отображает только исходные пакеты API библиотеки поддержки в пространство имен androidx.

По сути, они просто переименовали имя пакета, чтобы им было легко поддерживать обновления для библиотек.

Вы можете легко найти соответствующий пакет androidx здесь.

Миграция на Androidx.

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