Closed icarob-eng closed 1 year ago
Além das questões dos fragments, é importate lembrar sobre os adapters: o layout de um adapter não pode ser um ConstraintLayout
. Pode-se usar um LinearLayout
ou mesmo um RelativeLayout
se preferir.
Deve-se terminar de implementar todas as funcionalidades do banco de dados nesta issue.
Os fragments podem ser colocados em cima de um FragmentConteinerView
, segundo a documentação Android
<!-- res/layout/example_activity.xml -->
<androidx.fragment.app.FragmentContainerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
TAREFAS
Observações #dev
[x] Renomear as activity para fragments
Data de entrega 07/11
Passos para fazer um fragment
Renomear Tranforma em Frame layout Criar um constraint
@JuliaFreire, quando for refazer as telas de carimbo, ponha os TextInputLayout
s em um adapter
, para não ter que refazer tantos editText
s. Assim é só descrever aqui a lista de inputs e imagens que precisam ser adaptados no recycler
Alterar tema
<style name="Theme.MontaigneApp" parent="Theme.MaterialComponents.Light.NoActionBar">
Renomear: CarimboDefinitivo
para CarimboProjeto
e
CarimboUnico
para CarimboEnsaio
.
Lembrar de checar se os adapters estão usando ConstraintLayout
. Eles devem usar outro mais simples como o RelativeLayout
ou de preferência o LinearLayout
. Isto por questões de performance.
Comit com renomeação dos fragments
@icarob-eng revisar
comitt de conversão de constraint layout para relative layout adpters
@icarob-eng revisar
Estes erros foram causados por não se ter sido feito sync do gradle pelo problema com o plugin.
public class BlankFragment extends Fragment {
private static final String ARG_PARAM1 = "param1"; // String de nome do parâmetro
private static final String ARG_PARAM2 = "param2";
private String mParam1;
private String mParam2;
public BlankFragment() {
// Required empty public constructor
}
public static BlankFragment newInstance(String param1, String param2) {
BlankFragment fragment = new BlankFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_blank, container, false);
}
}
Para instanciar o Fragment
, é usado o método newInstance()
ao invés do construtor, este que deve ficar vazio. Isto serve para facilmente recuperar valores pelo Bundle
savedInstanceState
, uma forma de permanência que permite salvar apenas serializáveis e são salvos no Bundle
. Como não iremos usar este recurso, pode ser ignorado... Então podemos passar dados pelo construtor (ainda precisando definir um construtor vazio devido a API do Android), não usando o método newInstance()
.
Desta forma, os fragments ficam com a seguinte estrutura:
class BlankFragment extends Fragment {
private Object param1, param2;
public BlankFragment(){}
public BlankFragment(Object param1, Object param2){
this.param1 = param1;
this.param2 = param2;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_blank, container, false);
}
}
Onde os dados são passados pro viewModel pelo construtor e salvos ou usando dataBinding (a se estudar), ou usando algo como o onPause()
para ler os valores dos campos. No final do fragment ou em uma transição, os dados do viewModel do fragment podem ser passados para o viewModel da activity, por um método chamado pela transição ou usando o método public onCleared()
.
Resta estudas as transições entre fragments. No momento o app está crashando, o que será resolvido com o uso do viewBinding no adapter.
Link dos atributos do relative layout:
Lista para por no recylcer dos Ids do Adapter Carimbo Projeto:
ImputEditText
android:id="@+id/TextImputEditTextNameProjeto"
android:id="@+id/TextImputEditTextTecnico" android:id="@+id/TextImputEditTextEmpresa" android:id="@+id/TextImputEditTextContato" android:id="@+id/TextImputEditTextCliente" android:id="@+id/TextImputEditTextLocalObra" android:id="@+id/TextImputEditTextNúmeroFuros" android:id="@+id/TextImputEditTextReferenciaNivel"
ImputLayout
TextInputLayoutNameProjeto
TextInputLayoutTecnico
TextInputLayouteEmpresa
TextInputLayoutContato
TextInputLayoutCliente
TextInputLayoutLocalObra
TextInputLayoutNúmeroFuros
TextInputLayoutReferenciaNivel
Icons
ic_name_project ic_technician ic_empresa ic_contato ic_perfil ic_location ic_furo ic_referencia_furo
Padrão do textImputLayout
Campos Obrigatórios
Nome do Projeto Referência de nível Número de furos
Organizar cor do toolbar no modo noturno @JuliaFreire
Ver video https://youtu.be/uPdnW0Zxmr4 para menu
Adaptação para utilização de ViewBinding
e Fragment
s:
HomeActivity
e seus adapters;CarimboProjetoFragment
;CarimboEnsaioFragment
;EnsaioFragment
;ProjetoFragment
e seus adapters;FuroFragment
e seus adapters;Resta fazer a navegação entre os fragmentos.
@JuliaFreire, a estrutura do layout de ActivitySpt
estava errada, com o ConstraintLayout
dentro do FrameLayout
. Já corrigi isto, então veja como o layout ficou.
@JuliaFreire, quando for fazer o layout da ActivitySpt
, veja que o botão com + não precisa ser um FlaotingActionButton
, mas um botão típico mesmo.
Sobre a navegação e comunicação entre fragmentos: podemos fazer com que todos os fragmentos acessem a um viewModel compartilhado pela activity, assim a comunicação será mais simples, pois é só escrever ou ler os dados no viewModel compartilhado, e quando um fragment pedir uma transação de fragments, o viewModel será responsável por fazê-la.
É possível utilizar tags para fazer a referênciação dos fragments, deste modo, não se faz estritamente necessário o uso do navigation graph da issue #35.
@JuliaFreire, a estrutura do layout de
ActivitySpt
estava errada, com oConstraintLayout
dentro doFrameLayout
. Já corrigi isto, então veja como o layout ficou.
certo obg
butão de voltar
Substituir Icons
ic_name_project ic_technician ic_empresa ic_contato ic_perfil ic_location ic_furo ic_referencia_furo
Substitua hint
Nome do Projeto Técnico responsavél Empresa ou construtora Contato Nome do cliente // ou contratante Local da obra Número de furos Referência de nível // ex: calçada Altura da referência de nível
Substituir observações
ImputLayoutNomeProjeto ImputLayoutNúmeroFuros ImputLayoutReferenciaNível ImputLayoutAlturaReferencianível
TODOS ESSES SÃO: Obrigátorio*
adicionado menu ao home
colocar os itens
Substituir do adpter carimbo projeto
Substitua hint
Por favor, criar as strings no strings.xml
para eu colocar aí.
@JuliaFreire, os nomes de strings no strings.xml
não estão devidamente organizados:
Recomendo ver guia de estilo para strings;
Recomendo que encarregue alguém de corrigir os todos os resources em acordo com o definido no guia de estilo para resources...
Aliás é redundante pôr Txt
na frente de cada nome de string resource.
-[ ] Criar adapter de amostras
adicionado butão de adicionar amostra na tela fragment ensaio @icarob-eng
alterado adpter projeto
Adicionado adpter furo que contém as amostras o card view não é editavel
Implementar na tela fragment furo, irei adicionar a tela de editar amostra
@icarob-eng
TO DO
URGENTE
Importantes porém não urgentes
Altera paleta de cor do menu
@icarob-eng
ja adicionado strings, não consiguir alterar o nome la no vm, porque não sei
@JuliaFreire , por favor, corrigir a nomeação de recursos, principalmente as strings para snake_case
, não camelCase
, como definido no nosso guia de estilo, coisa que já cobrei de ti.
E por favor referenciar de preferência onde o texto da string será usado, não o seu conteúdo...
Eu já corrigi para estas strings específicas, mas espero que ti corrija o resto.
Além disso, não é com //
que se faz comentários em .xml
. A sintaxe correta está pelo próprio strings.xml
... Ti também pode apertar ctrl
+ /
na linha que quer comentar, que a IDE faz corretamente.
referencia de nivel do projeto e nome de projeto unicos que são obrigatorios
adicionado toollbar do spt e menu de spt
Adicionado icon de voltar no toolbar do spt
Solved by #54
A maioria das telas exceto a home podem ser passadas para uma única activity, mantendo os botões de navegação (home e próxima tela, ou carimbo) na barra inferior e o conteúdo em si seria em fragments, com botões para manipular o conteúdo (por exemplo lixeria e novo) dentro do próprio fragment e fora da barra de navegação.
Projetar um recycler para a tela de carimbo defintivo, em que os campos de texto sejam reaproveitados e as mensagens sobrescritas.