Android 如何使活动输出字符串成为另一个活动输入字符串
我创建了两个活动,第一个是函数后的一个toast字符串 第二个活动必须从第一个活动获取此字符串,并将其输入到TextView中 这是我的第一个活动Android 如何使活动输出字符串成为另一个活动输入字符串,android,Android,我创建了两个活动,第一个是函数后的一个toast字符串 第二个活动必须从第一个活动获取此字符串,并将其输入到TextView中 这是我的第一个活动 package com.example.project; import android.app.Activity; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.view.View; imp
package com.example.project;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnMapClickListener;
import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener;
import com.google.android.gms.maps.GoogleMap.OnMarkerClickListener;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.Polyline;
import com.google.android.gms.maps.model.PolylineOptions;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
public class AirportActivity extends Activity implements OnMapClickListener, OnMapLongClickListener, OnMarkerClickListener{
boolean markerClicked;
PolylineOptions rectOptions;
Polyline polyline;
GoogleMap googleMap;
List<LatLng> points;
List<Polyline> polylines;
String f = "" ;
String[] placeNames = {"Cairo International Airport","Alexandria International Airport","Borg El Arab Airport",
"Marsa Matrouh Airport","Sharm el-Sheikh International Airport","Taba International Airport","El Kharga Airport",
"Assiut Airport","Luxor International Airport","Aswan International Airport","El Arish International Airport",
"St. Catherine International Airport","Sharq Al-Owainat Airport","Abu Simbel Airport","Sohag International Airport",
"Port Said Airport","El Tor Airport","Dakhla Oasis Airport","Marsa Alam International Airport","Cairo West Air Base","Almaza Air Force Base"};
String[] placeNamesSnippet = {"Cairo International Airport1","Alexandria International Airport2","Borg El Arab Airport3", "Marsa Matrouh Airport4","Sharm el-Sheikh International Airport5","Taba International Airport6","El Kharga Airport7", "Assiut Airport8","Luxor International Airport9","Aswan International Airport10","El Arish International Airport11", "St. Catherine International Airport12","Sharq Al-Owainat Airport13","Abu Simbel Airport14","Sohag International Airport15", "Port Said Airport16","El Tor Airport17","Dakhla Oasis Airport18","Marsa Alam International Airpor19t","Cairo West Air Bas20e","Almaza Air Force Base21"};
Double[] placeLatitude = {30.111370, 31.192553, 30.917138,31.324435,27.978620,29.590988,27.188222,27.047695, 25.670264,
23.960397,31.076449,28.684537,22.580600,22.375813,26.331926,31.281150,28.208842,25.688581,25.558141,
30.116704,30.095975};
Double[] placeLongitude = {31.413910, 29.953141,29.693375, 27.222200,34.393354,34.778946 , 33.800840, 31.013473 , 32.704063,
32.821163,33.832256,34.062882, 28.720754, 31.611667,31.728437,32.242223,33.645257,28.972356,34.582821,
30.916667,31.362748};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.airportactivity);
googleMap = ((MapFragment)getFragmentManager().findFragmentById(
R.id.mapView)).getMap();
//googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
// googleMap.animateCamera(CameraUpdateFactory.newLatLng(point));
points = new ArrayList<LatLng>();
polylines = new ArrayList<Polyline>();
setmap();
} private void setmap()
{
for(int i = 0 ; i<21;i++)
{
googleMap.addMarker(new MarkerOptions()
.snippet(placeNamesSnippet[i])
.position(new LatLng(placeLatitude[i], placeLongitude[i]))
.title(placeNames[i]));
points.add(new LatLng(placeLatitude[i], placeLongitude[i]));
}
markerClicked = false;
googleMap.setOnMapLongClickListener(this);
googleMap.setOnMarkerClickListener(new OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker arg0) {
// TODO Auto-generated method stub
points.add(arg0.getPosition());
googleMap.clear();
setmap();
FindShortestPath();
markerClicked = true;
return false;
}
});
}
public void dis (int[] p)
{
double x = 0 ;
double s= 0;
int numOfNodes = points.size();
for (int index = 0 ; index < numOfNodes-1 ; index++)
{
x = distance2(points.get(p[index]).latitude,points.get(p[index]).longitude , points.get(p[index+1]).latitude,points.get(p[index+1]).longitude, 'K');
s = s+x ;
}
Toast.makeText(this, "Total distance of path = " + s+"KM" , Toast.LENGTH_SHORT).show();
f = String.valueOf(s);
}
/*:: are available at http://www.geodatasource.com :*/
/*:: Official Web site: http://www.geodatasource.com :*/
private double distance2(double lat1, double lon1, double lat2, double lon2, char unit) {
double theta = lon1 - lon2;
double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta));
dist = Math.acos(dist);
dist = rad2deg(dist);
dist = dist * 60 * 1.1515;
if (unit == 'K') {
dist = dist * 1.609344;
}
return (dist);
}
/*:: This function converts decimal degrees to radians :*/
private double deg2rad(double deg) {
return (deg * Math.PI / 180.0);
}
/*:: This function converts radians to decimal degrees :*/
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
private double rad2deg(double rad) {
return (rad * 180 / Math.PI);
}
public void onClick(View view) {
startActivity(new Intent("net.learn2develop.MAIN"));
}
public static double distance(LatLng StartP, LatLng EndP) {
double lat1 = StartP.latitude;
double lat2 = EndP.latitude;
double lon1 = StartP.longitude;
double lon2 = EndP.longitude;
double dLat = Math.toRadians(lat2-lat1);
double dLon = Math.toRadians(lon2-lon1);
double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
Math.sin(dLon/2) * Math.sin(dLon/2);
double c = 2 * Math.asin(Math.sqrt(a));
return 6366000 * c;
}
// calculate distances matrix then get shortest path then call draw
public void FindShortestPath()
{
TSPNearestNeighbour tsp = new TSPNearestNeighbour();
int adjacencyMatrix[][] = new int[points.size()][];
int counter = 0,innerCounter ;
int[] result = new int[points.size()];
for(LatLng point : points)
{
innerCounter=0;
adjacencyMatrix[counter] = new int[points.size()];
for(LatLng point1 : points)
{
if(point.equals(point1))
{
adjacencyMatrix[counter][innerCounter] = 0;
}
else
adjacencyMatrix[counter][innerCounter] =(int) distance(point,point1);
innerCounter ++;
}
counter ++;
}
result = tsp.tsp(adjacencyMatrix);
DrawShortestPath(result);
dis(result);
}
//draws the shortest path with markers
public void DrawShortestPath(int[] path)
{
googleMap.clear();
int numOfNodes = points.size();
for(LatLng point : points)
{
googleMap.addMarker(new MarkerOptions().icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
.position(point));
}
for (int index = 0 ; index < numOfNodes-1 ; index++)
{
googleMap.addPolyline(new PolylineOptions()
.add(points.get(path[index]), points.get(path[index+1]))
.width(3)
.color(Color.RED));
}
}
class TSPNearestNeighbour
{
private int numberOfNodes;
private Stack<Integer> stack;
public TSPNearestNeighbour()
{
stack = new Stack<Integer>();
}
public int[] tsp(int adjacencyMatrix[][])
{
numberOfNodes = adjacencyMatrix[0].length ;
int[] result = new int[adjacencyMatrix[0].length];
int resultCounter = 1;
int[] visited = new int[numberOfNodes];
visited[0] = 1;
stack.push(0);
int element, dst = 0, i;
int min = Integer.MAX_VALUE;
boolean minFlag = false;
result[0] = 0;
//System.out.print(1 + "\t");
while (!stack.isEmpty())
{
element = stack.peek();
i = 0;
min = Integer.MAX_VALUE;
while (i < numberOfNodes)
{
if (adjacencyMatrix[element][i] > 1 && visited[i] == 0)
{
if (min > adjacencyMatrix[element][i])
{
min = adjacencyMatrix[element][i];
dst = i;
minFlag = true;
}
}
i++;
}
if (minFlag)
{
visited[dst] = 1;
stack.push(dst);
result[resultCounter] = dst;
resultCounter++;
//System.out.print(dst + "\t");
minFlag = false;
continue;
}
stack.pop();
}
return result;
}
}
@Override
public void onMapClick(LatLng arg0) {
// TODO Auto-generated method stub
}
@Override
public void onMapLongClick(LatLng arg0) {
// TODO Auto-generated method stub
}
@Override
public boolean onMarkerClick(Marker arg0) {
// TODO Auto-generated method stub
return false;
}
}
为了让word message成为第一次活动的祝酒词,我必须做些什么?
抱歉英语不好使用意图传递数据,
您需要做的是:创建一个Intent对象并将其作为额外字符串加载,然后按如下方式启动新活动:
Intent intent = new Intent("ActivityA.this", "ActivityB.class");
intent.putExtra("key", "your string");
startActivity(intent);
在第二个活动中,获取您已经发送的附加信息,并执行您想要的操作:
String myString = getIntents().getExtras().getString("key");
请注意,key是字符串值的键,或者您可以将其视为从其他附加项中标识字符串的标记,因此您可以将其命名为与字符串相关的内容
您还可以访问以获取有关意图的更多信息。因此,您要做的是将数据从一个活动传递到另一个活动?是的,但当第二个活动开始时,第一个活动的输出将成为第二个活动的输入文本,第二个活动用此字符串初始化
String myString = getIntents().getExtras().getString("key");