2
Good Morning,
How do I reference a button from another Activity? In main, I am using another layout to inflate my list, and the button event is obviously returning null because it is not finding the view. Help.
private static String pesquisarDadosLivro;
private DadosLivrosAdapter adapter;
private static final String GOOGLE_LIVROS_URL =
"https://www.googleapis.com/books/v1/volumes?q= " + pesquisarDadosLivro;
private static final int DADOSLIVROS_ID_LOADER = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_view);
Button pesquisarLivro = (Button) findViewById(R.id.pesquisar);
pesquisarLivro.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EditText dadosLivro = (EditText) findViewById(R.id.dados_livro);
pesquisarDadosLivro = dadosLivro.getText().toString();
//Log.v("MainActivity", "Texto a ser pesquisado " + pesquisarDadosLivro);
}
});
ListView listView = (ListView) findViewById(R.id.lista);
adapter = new DadosLivrosAdapter(this, new ArrayList<DadosLivro>());
listView.setAdapter(adapter);
LoaderManager loaderManager = getLoaderManager();
loaderManager.initLoader(DADOSLIVROS_ID_LOADER, null, this);
}
@Override
public android.content.Loader<List<DadosLivro>> onCreateLoader(int i, Bundle bundle) {
// Create a new loader for the given URL
return new DadosLivrosLoader(this, GOOGLE_LIVROS_URL);
}
@Override
public void onLoadFinished(android.content.Loader<List<DadosLivro>> loader, List<DadosLivro>
informacoesLivros) {
if (informacoesLivros != null && !informacoesLivros.isEmpty()) {
adapter.addAll(informacoesLivros);
}
}
@Override
public void onLoaderReset(android.content.Loader<List<DadosLivro>> loader) {
adapter.clear();
}
}
Hello, I managed to solve the problem by inflating the same main Activity, as it contains the components that interacts with the user and is only 1 screen, I found more feasible, however I’m with another error, my http request returned 400, the value entered by the user is not sending the URL, I need the Loader to be loaded after the button event, know how I can do this?
package com.example.android.listadelivros;
import android.app.LoaderManager;
import android.app.LoaderManager.LoaderCallbacks;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity
implements LoaderCallbacks<List<DadosLivro>> {
private String pesquisarDadosLivro;
private DadosLivrosAdapter mAdapter;
private String GOOGLE_LIVROS_URL = null;
private static final int DADOSLIVROS_ID_LOADER = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button pesquisarLivro = (Button) findViewById(R.id.pesquisar);
pesquisarLivro.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EditText dadosLivro = (EditText) findViewById(R.id.dados_livro);
pesquisarDadosLivro = dadosLivro.getText().toString();
GOOGLE_LIVROS_URL =
"https://www.googleapis.com/books/v1/volumes?q= " + pesquisarDadosLivro;
final LoaderManager loaderManager = getLoaderManager();
loaderManager.initLoader(DADOSLIVROS_ID_LOADER, null,);
}
});
ListView listView = (ListView) findViewById(R.id.lista);
mAdapter = new DadosLivrosAdapter(this, new ArrayList<DadosLivro>());
listView.setAdapter(mAdapter);
}
@Override
public android.content.Loader<List<DadosLivro>> onCreateLoader(int i, Bundle bundle) {
return new DadosLivrosLoader(this, GOOGLE_LIVROS_URL);
}
@Override
public void onLoadFinished(android.content.Loader<List<DadosLivro>> loader, List<DadosLivro>
informacoesLivros) {
if (informacoesLivros != null && !informacoesLivros.isEmpty()) {
mAdapter.addAll(informacoesLivros);
}
}
@Override
public void onLoaderReset(android.content.Loader<List<DadosLivro>> loader) {
mAdapter.clear();
}
}
The idea is that you do not refer to a View of an Activity in another Activity. If you want to use information from another Activity, you need to communicate between them: https://developer.android.com/training/basics/intents/result.html .
– Erick M. Sprengel
I believe this answer can help you: https://answall.com/a/135889/2461
– Erick M. Sprengel
It is necessary that the button be declared in xml that you set as contentView ( setContentView(R.layout.list_view) ), as Erick said, it is not possible to reference one Activity in another!
– Thiago Luiz Domacoski