Preciso chamar uma Activity qnd clico em um botão, essa acivity contém um listView q é alimentado a partir de um cursor. Segue o código:
chamando a activity no clique do botão:
btnListar.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//setContentView(R.layout.consulta_linha_tabela);
Intent i = new Intent(v.getContext(), Registros.class);
startActivity(i);
}
});
}
Activity q será chamada:
public class Registros extends Activity {
private DbAdapter db;
Cursor cursor;
String [] itens = null;
SimpleCursorAdapter adapterLista;
ListView lista;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.consulta_linha_tabela);
listar();
}
private void listar() {
db.open();
lista = (ListView) findViewById(R.id.list);
String nome = "";
String codigo = "";
List<String> lista1 = new ArrayList<String>();
while (cursor.moveToNext()){
nome = cursor.getString(cursor.getColumnIndex(DbAdapter.COLUNA_NOME));
codigo = cursor.getString(cursor.getColumnIndex(DbAdapter.COLUNA_CODIGO));
lista1.add(nome+"\n"+codigo);
}
itens = (String []) lista1.toArray(new String [0]);
ArrayAdapter<String> ad = new ArrayAdapter<String>(this, R.layout.consulta_linha_tabela, itens);
lista.setAdapter(ad);
db.close();
}
xml da nova activity:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content">
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1" >
</ListView>
<TextView
android:id="@+id/linha1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/linha2"
android:padding="5sp"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
android manifest:
<activity
android:name=".Registros"
android:label="List View" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
e dá esse erro aqui:
Alguém sabe como resolver esse problema??
Tenta Cololocar ao invés de
Intent i = new Intent(v.getContext(), Registros.class);
tenta colocar o activity atual exemplo:
Intent i = new Intent(ActivityAtual.this, Registros.class);
//ou
Intent i = new Intent(ActivityMain.this, Registros.class);
//Trocando ActivityMain.this pelo Activity Atual.
Na pratica o isso tambem serve para fazer comunicação entre activitys
Caso não funcione tem alguns exemplos em:
http://yuriadamsmaia.wordpress.com/2011/03/27/desenvolver-para-android-chamando-activitys/
Bom eduardovs, muito obrigado pela ajuda, mas não funcionou…
continua dando o mesmo erro, eu já não sei mais o que fazer!
lina
Maio 7, 2012, 11:24am
#4
[quote=thamiris.ramos]Bom eduardovs, muito obrigado pela ajuda, mas não funcionou…
continua dando o mesmo erro, eu já não sei mais o que fazer![/quote]
Oi,
Com certeza está faltando algo em seu AndroidManifest.xml
Poderia posta-lo por completo?
Tchauzin!
Faz assim:
db = new DbAdapter(…);
antes do db.open(),
Eu fiz e continua dando NullPointerException…
Segue o AndroindManifest.xml completo…
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="br.android.consulta"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:icon="@drawable/ic_app"
android:label="@string/app_name" >
<activity
android:name=".BuscadorSedex1Activity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Pesquisa"
android:label="pesquisa" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
</intent-filter>
</activity>
<activity android:name=".Registros" android:label="Registros">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</activity>
</application>
</manifest>
Posta o logCat completo, por favor
Bem, as activities que eu declaro no manifest só tem o nome:
Achei meio estranho também ter um ponto no nome da activity no manifest, tira ele e veja o que acontece. Deixe ele o mais simples e tente executar.
lina
Maio 7, 2012, 3:30pm
#10
Oi,
Tenta assim:
[code]
<?xml version="1.0" encoding="utf-8"?>
<uses-sdk android:minSdkVersion="7" />
<application
android:icon="@drawable/ic_app"
android:label="@string/app_name" >
<activity
android:name="br.android.consulta.BuscadorSedex1Activity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="br.android.consulta.Pesquisa"
android:label="pesquisa" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
</intent-filter>
</activity>
<activity android:name="br.android.consulta.Registros"
android:label="Registros">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET" />
[/code]
Tchauzin!
[quote=thamiris.ramos][quote]
Faz assim:
db = new DbAdapter(…);
antes do db.open(),
[/quote]
Eu fiz e continua dando NullPointerException…[/quote]
Seu NullPointer só poder ser a variavel db até onde posso ver.
Poste o erro completo e atualizado.
PS: Use ListActivity posteriormente…
[quote=soaresinfo]…
Achei meio estranho também ter um ponto no nome da activity no manifest, tira ele e veja o que acontece. Deixe ele o mais simples e tente executar…
[/quote]
O Ponto (.) é devido conter o package no manifest.
Desculpe por tantos posts, alias não acredito que seja o Manisfest, me parece que a outra variavel não inicializada
A “cursor”
while (cursor.moveToNext()){
clarur
Maio 24, 2012, 12:16pm
#14
Oi, na minha aplicação eu fiz dessa forma…
public void chamatela(){
startActivity(new Intent(NOME DA ACTIVITY QUE VC ESTA.this, Registros.class));
}
e depois vc pode chamar o proocedimento pelo botão
btnListar.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
chamatela();
}
});
Espero ter ajudado. ,/
Pelo que eu entedi a classe registro não é a principal, certo ? Mas no android manifest, ela esta definida como uma:
[code]
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
[/code]
Isso é errado, o correto seria:
<activity android:name=".Registros" android:label="List View" />
C115
Junho 17, 2013, 11:38am
#16
[quote=thamiris.ramos]Preciso chamar uma Activity qnd clico em um botão, essa acivity contém um listView q é alimentado a partir de um cursor. Segue o código:
chamando a activity no clique do botão:
btnListar.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//setContentView(R.layout.consulta_linha_tabela);
Intent i = new Intent(v.getContext(), Registros.class);
startActivity(i);
}
});
}
Activity q será chamada:
public class Registros extends Activity {
private DbAdapter db;
Cursor cursor;
String [] itens = null;
SimpleCursorAdapter adapterLista;
ListView lista;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.consulta_linha_tabela);
listar();
}
private void listar() {
db.open();
lista = (ListView) findViewById(R.id.list);
String nome = "";
String codigo = "";
List<String> lista1 = new ArrayList<String>();
while (cursor.moveToNext()){
nome = cursor.getString(cursor.getColumnIndex(DbAdapter.COLUNA_NOME));
codigo = cursor.getString(cursor.getColumnIndex(DbAdapter.COLUNA_CODIGO));
lista1.add(nome+"\n"+codigo);
}
itens = (String []) lista1.toArray(new String [0]);
ArrayAdapter<String> ad = new ArrayAdapter<String>(this, R.layout.consulta_linha_tabela, itens);
lista.setAdapter(ad);
db.close();
}
xml da nova activity:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content">
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1" >
</ListView>
<TextView
android:id="@+id/linha1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/linha2"
android:padding="5sp"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
android manifest:
<activity
android:name=".Registros"
android:label="List View" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
e dá esse erro aqui:
Alguém sabe como resolver esse problema??[/quote]
Você ja olhou se o ação esta sendo declarada
Button botao = (Button) findViewById(R.id.NOME_DO_SEU_BOTÃO);
botao.setOnClickListener(this);
tenta marcar um breakpoint lá no metodo listar() na primeira linha db.open, e vai debugando pra ver em qual linha que ele pára e dá o erro…