私はフランス人ですが、私の問題を説明しようと思います。ListView があり、この ListView で別のアクティビティを開始したいと思います。最初の 2 つのアイテムは PDF を起動する必要がありますが、3 番目の「Sur Facebook」は起動する必要があります。新しいアクティビティ、特に新しいビュー(facebook.java)、ボタンで実行できますが、 ListView 以来できません。コードは次のとおりです。
package com.androiddev.tab;
import java.io.FileNotFoundException;
...
public class Tab5 extends ListActivity implements OnClickListener {
private ListView maListViewPerso25;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.onglet5);
Button button = (Button) findViewById(R.id.imageButtonSelector2);
button.setOnClickListener(this);
maListViewPerso25 = (ListView) findViewById(R.id.listView25);
ArrayList<HashMap<String, String>> listItem25 = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map;
map = new HashMap<String, String>();
map.put("titre", "1 - Qui sommes-nous ?");
map.put("img", String.valueOf(R.drawable.fleche));
map.put("file", "QSN.pdf");
listItem25.add(map);
map = new HashMap<String, String>();
map.put("titre", "2 - A propos de l'application");
map.put("img", String.valueOf(R.drawable.fleche));
map.put("file", "Apropos.pdf");
listItem25.add(map);
map = new HashMap<String, String>();
map.put("titre", "3 - Sur Facebook");
map.put("img", String.valueOf(R.drawable.fleche));
listItem25.add(map);
SimpleAdapter mSchedule = new SimpleAdapter (this.getBaseContext(), listItem25, R.layout.afichageitem,
new String[] {"img", "titre" }, new int[] {R.id.fleche, R.id.titre});
maListViewPerso25.setAdapter(mSchedule);
//LISTENER
maListViewPerso25.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
HashMap<String, String> map = (HashMap<String, String>) maListViewPerso25.getItemAtPosition(position);
String nomFichierDansAsset = map.get("file");
String nomFichierTemp = "list25.pdf";
if (copyAssetToTempFile(nomFichierDansAsset, nomFichierTemp)) {
try {
String name = getFileStreamPath(nomFichierTemp).getAbsolutePath();
Uri uri = Uri.parse("file://" + name);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "application/pdf");
startActivity(intent);
} catch (ActivityNotFoundException e) {
// Cas d'erreur si pas de lecteur PDF installé
Log.d("xx", "Erreur affichage PDF", e);
}
}
}
});
};
private boolean copyAssetToTempFile(String nomFichierAsset,
String nomFichierTemp) {
boolean result = true;
try {
byte[] buffer = new byte[512];
FileOutputStream fos = openFileOutput(nomFichierTemp, MODE_WORLD_READABLE);
InputStream is = getAssets().open(nomFichierAsset);
int bytesRead = is.read(buffer);
while (bytesRead > 0) {
fos.write(buffer, 0, bytesRead);
bytesRead = is.read(buffer);
}
fos.close();
is.close();
} catch (FileNotFoundException e) {
// Cas d'erreur de création de fichier
Log.d("xx", "Erreur creation fichier ", e);
result = false;
} catch (IOException e) {
// Cas d'erreur de lecture de fichier
Log.d("xx", "Erreur lecture fichier", e);
result = false;
}
return result;
}
// POUR LE BOUTON
public void onClick(View src) {
Intent i = new Intent(this, TabAndroidActivity.class);
startActivity(i);
};
}