setOnClickListener
が実行されるとすぐに、別のアクティビティを開始し、変数cn.getID()
をそれに送信します。他のアクティビティの中で私はメソッドfindlocation
をimmidietalyで開始し、cn.getID()
を与えたいと思います。別のアクティビティを開始し、その中でメソッドを開始するにはどうすればよいですか?
方法findLocation
はまだ完了していません。そのアイデアは、他のアクティビティボタンのID
を取得すると、自分のデータベース内のsqlliteで所属する場所を検索し、経度と緯度を取得して、mapcontroller
にこの時点で世界地図をフォーカスするように指示します。これが今の私のクラス全体で、一部編集した後 @Murat K.:
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:
@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);
}
これは、私はそれが開始された後immidietaly実行する新しいアクティビティ内からメソッドです。
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);
}
}
そして、これは私のonCreateのgetIntentですUI_MainActivityでの方法:私のボタン-IDを受け取っている場合、私は私の以前のコメントに編集したよう
int i = getIntent().getIntExtra("findlocation", 999);
if(i == 1){
findLocation(i);
}
は、私が見る傾けます。最初は私のIDであると思っていましたが、ボタンIDは1からnまでのすべての番号にすることができるので、それはうまくいきません。
あなたの 'openMap()'メソッドでは、あなたはインテントに何も入れていません。私の答えはそのまま使用しなければなりません。 –
@MuratK。私はあなたの答えをそのまま使っていたと思った。たぶん私はあなたを誤解しました。だから私が何が欠けているか教えてくれませんか?申し訳ありませんが、私は経験が豊富です。 – Glave