Sobald die setOnClickListener
ausgeführt wird, möchte ich eine andere Aktivität starten und die Variable cn.getID()
an sie senden. Wenn ich innerhalb der anderen Aktivität bin, möchte ich sofort die Methode findlocation
starten und cn.getID()
dazu geben.Wie starte ich eine andere Aktivität und starte eine Methode darin?
Die Methode findLocation
ist noch nicht fertig. Die Idee ist, sobald es die ID
der anderen Aktivitäten Schaltfläche bekommt, kann ich mit Sqllite in meiner Datenbank nach dem Ort suchen, zu dem es gehört, erhalten Längen- und Breitengrad und sagen mapcontroller
Fokus der Weltkarte auf diesen Punkt.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.verladestellen);
final DB_Verladestellen db = new DB_Verladestellen(this);
List<DB_Place> placeList = db.getAllDBPlaces();
final LinearLayout layout = (LinearLayout) findViewById(R.id.verladestellen_liste);
for (final DB_Place cn : placeList) {
final LinearLayout row = new LinearLayout(this);
row.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
Button place = new Button(this);
place.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
place.setText(cn.getName());
place.setId(cn.getID());
row.addView(place);
row.setId(cn.getID());
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) place.getLayoutParams();
params.weight = 1.0f;
place.setLayoutParams(params);
place.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Here I want to call the method to start the other activity
//and transmit cn.getID().
openMap(null);
}
});
layout.addView(row);
}
}
//The method to start the other activity
public void openMap(View view) {
Intent intent = new Intent(this, UI_MainActivity.class);
startActivity(intent);
}
Dies ist die Methode aus dem Innern der neuen Aktivität I immidietaly ausgeführt werden soll, nachdem es begonnen hat:
public void findLocation(View view){
MapView map = (MapView) findViewById(R.id.map);
IMapController mapController = map.getController();
mapController.setZoom(17);
GeoPoint myLocation = new GeoPoint(PLACEHOLDER X , PLACEHOLDER Y);
mapController.animateTo(myLocation);
}
EDIT: @Murat K. Nach einigen Änderungen der jetzt meine ganze Klasse ist:
public class UI_Verladestellen extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.verladestellen);
final DB_Verladestellen db = new DB_Verladestellen(this);
List<DB_Place> placeList = db.getAllDBPlaces();
final LinearLayout layout = (LinearLayout) findViewById(R.id.verladestellen_liste);
for (final DB_Place cn : placeList) {
final LinearLayout row = new LinearLayout(this);
row.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
Button place = new Button(this);
place.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
place.setText(cn.getName());
place.setId(cn.getID());
row.addView(place);
row.setId(cn.getID());
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) place.getLayoutParams();
params.weight = 1.0f;
place.setLayoutParams(params);
place.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openMap(cn.getID());
}
});
layout.addView(row);
}
}
public void openMap(int view) {
Intent intent = new Intent(UI_Verladestellen.this, UI_MainActivity.class);
intent.putExtra("findLocation", 1);
startActivity(intent);
}
}
Und das ist das getIntent meiner onCreate in UI_MainActivity Methode:
int i = getIntent().getIntExtra("findlocation", 999);
if(i == 1){
findLocation(i);
}
Wie ich in meinen früheren Kommentar bearbeitet, ich kann nicht sehen, wo meine Knopf-ID empfangen ist. Zuerst dachte ich, ich wäre meine ID, aber das würde nicht funktionieren, da die Button ID jede Zahl von 1 bis n sein kann.
In Ihrer Methode 'openMap()' setzen Sie nichts in die Absicht. Sie müssen meine Antwort genau so verwenden, wie sie ist. –
@MuratK.Ich dachte, ich hätte deine Antwort genau so benutzt, wie sie ist. Vielleicht habe ich dich missverstanden. Kannst du mir sagen, was ich vermisse? Tut mir leid, ich bin nicht sehr erfahren. – Glave