0

デフォルトアクティビティからアクティビティを呼び出そうとしていますが、コールアクティビティをトリガーすると、アプリケーションがクラッシュしてこの07-06 11:54:59.291: E/MapActivity(366): Couldn't get connection factory clientメ​​ッセージで閉じられました。アクティビティを呼び出すための現在のコードは次のとおりです

public class GMapsActivity extends MapActivity {
EditText password;
Button   login;
MapView mapView;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initcontrols();
}
public void initcontrols()
{
    password=(EditText)findViewById(R.id.pass);
    login=(Button)findViewById(R.id.login);
    mapView=(MapView)findViewById(R.id.map_view);
    login.setOnClickListener(new Button.OnClickListener(){
        public void onClick(View v)
        {
             Intent myIntent = null;
             if(password.getText().toString().equals("admin")) {
             System.out.println("Entering");
             mapView.setVisibility(View.VISIBLE);
             login.setVisibility(View.INVISIBLE);
             password.setVisibility(View.INVISIBLE);
             myIntent = new Intent(v.getContext(), GMapsActivity1.class);

            } else {
            }
             startActivity(myIntent);
        }

    });

}



@Override
protected boolean isRouteDisplayed() {
    // TODO Auto-generated method stub
    return false;
}


}

誰でも私がこれを行うのを手伝ってください

更新 は私の 2 番目のアクティビティ コードです。変更が必要かどうかを確認してください

public class GMapsActivity1 extends MapActivity {

private MapView mapView;
EditText password;
Button   login;

JSONArray jArray;
String result = null;
InputStream is = null;
StringBuilder sb=null;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);


mapView = (MapView) findViewById(R.id.map_view);       
        mapView.setBuiltInZoomControls(true);

 ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
//http post
try{
     HttpClient httpclient = new DefaultHttpClient();
     HttpPost httppost = new HttpPost("http://sml.com.pk/a/map.php");
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
     HttpResponse response = httpclient.execute(httppost);
     HttpEntity entity = response.getEntity();
     is = entity.getContent();
     }catch(Exception e){
         Log.e("log_tag", "Error in http connection"+e.toString());
    }
//convert response to string
try{
      BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
       sb = new StringBuilder();
       sb.append(reader.readLine() + "\n");

       String line="0";
       while ((line = reader.readLine()) != null) {
                      sb.append(line + "\n");
        }
        is.close();
        result=sb.toString();
        }catch(Exception e){
              Log.e("log_tag", "Error converting result "+e.toString());
        }
//paring data
double LAT;
double LANG;
String INFO;
try{
      jArray = new JSONArray(result);
      JSONObject json_data=null;
      for(int i=0;i<jArray.length();i++){
             json_data = jArray.getJSONObject(i);
             LAT=json_data.getDouble("lat");
             LANG=json_data.getDouble("lang");
             INFO=json_data.getString("info");


//Overlay code
List<Overlay> mapOverlays = mapView.getOverlays();
                Drawable drawable = this.getResources().getDrawable(R.drawable.icon);
        CustomItemizedOverlay itemizedOverlay = new CustomItemizedOverlay(drawable, this);

        //GeoPoint point = new GeoPoint(latitudeE6, longitudeE6);
        GeoPoint point = new GeoPoint((int)(LAT * 1e6),(int)(LANG * 1e6));
        OverlayItem overlayitem = new OverlayItem(point, "Shakarganj", INFO);
        itemizedOverlay.addOverlay(overlayitem);
        mapOverlays.add(itemizedOverlay);

        MapController mapController = mapView.getController();

        mapController.animateTo(point);
        mapController.setZoom(6);

//Overlay code

         }
      }
      catch(JSONException e1){
          Toast.makeText(getBaseContext(), "No Vehicles Found" ,Toast.LENGTH_LONG).show();
      } catch (ParseException e1) {
            e1.printStackTrace();
    }
}
@Override
protected boolean isRouteDisplayed() {
    return false;
}
}

これが私のマニフェストファイルコードです

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.javacodegeeks.android.googlemaps"
      android:versionCode="1"
      android:versionName="1.0">
      <uses-sdk android:minSdkVersion="10"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

    <application android:icon="@drawable/icon" android:label="@string/app_name">

        <activity android:name=".GMapsActivity"
                  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="GMapsActivity1"
           android:launchMode="singleTop">
            <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />

        </activity>

        <uses-library android:name="com.google.android.maps" />


    </application>    

</manifest> 

アップデート1

package com.javacodegeeks.android.googlemaps;

import java.util.ArrayList;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.widget.Toast;

import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.OverlayItem;

public class CustomItemizedOverlay extends ItemizedOverlay<OverlayItem> {

    private ArrayList<OverlayItem> mapOverlays = new ArrayList<OverlayItem>();

    private Context context;

    public CustomItemizedOverlay(Drawable defaultMarker) {
          super(boundCenterBottom(defaultMarker));
    }

    public CustomItemizedOverlay(Drawable defaultMarker, Context context) {
          this(defaultMarker);
          this.context = context;
    }

    @Override
    protected OverlayItem createItem(int i) {
        return mapOverlays.get(i);
    }

    @Override
    public int size() {
        return mapOverlays.size();
    }

    @Override
    protected boolean onTap(int index) {
        OverlayItem item = mapOverlays.get(index);
        //AlertDialog.Builder dialog = new AlertDialog.Builder(context);
        //dialog.setTitle(item.getTitle());
        //dialog.setMessage(item.getSnippet());
        //dialog.show();
        //Toast.makeText(context, item.getSnippet(), 20);
        Toast.makeText(context, item.getSnippet(),  Toast.LENGTH_LONG).show();
        return true;
    }

    public void addOverlay(OverlayItem overlay) {
        mapOverlays.add(overlay);
        this.populate();
    }

}
4

8 に答える 8

1

次のコードを試してください。

    public class GMapsActivity extends MapActivity {
    EditText password;
    Button   login;
    MapView mapView;


    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

        password=(EditText)findViewById(R.id.pass);
        login=(Button)findViewById(R.id.login);
        mapView=(MapView)findViewById(R.id.map_view);


        login.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v)
            {
                 Intent myIntent = null;
                 if(password.getText().toString().equals("admin")) {
                 System.out.println("Entering");
                 mapView.setVisibility(View.VISIBLE);
                 login.setVisibility(View.INVISIBLE);
                 password.setVisibility(View.INVISIBLE);
                 myIntent = new Intent(GMapsActivity.this, GMapsActivity1.class);
                 startActivity(myIntent);
                } 

            }

        });

    }



    @Override
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }


    }

アップデート

これを使用した理由:

<activity android:name="GMapsActivity1"
          android:launchMode="singleTop">
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />

</activity>

次のように使用します。

<activity
            android:name=".GMapsActivity1" 
            android:launchMode="singleTop" >
</activity>
于 2012-07-06T07:12:28.270 に答える
0

このアクティビティをマニフェスト ファイル内に追加する必要があります。そうしないと、開始されず、クラッシュします。これを行っていないと思います...

 <activity android:name="GMapsActivity1"
           android:launchMode="singleTop"></activity>
于 2012-07-06T06:58:54.810 に答える
0

これは古い投稿ですが、まだ投稿されていない解決策を見つけました。

呼び出しアクティビティを使用する場合、呼び出しアクティビティを取得しようとしているアクティビティにつながる可能性があるインテントに対して startActivityForResult を使用する必要があります。

例:

インテント インテント=新しいインテント(MainActivity.this, NextActivity.class); startActivityForResult(意図、123);

于 2015-07-24T16:32:20.000 に答える
0

最初に startActivity(myIntent); を入れます。if 条件で setContentView(...); を確認してください。GMapsActivity1 アクティビティで適切に定義され、GMapsActivity1 がマニフェスト ファイルに追加されました。もう 1 つの可能性があります。つまり、このアクティビティの layout.xml で定義されていない R.id.... を使用できます。

于 2012-07-06T07:10:50.557 に答える
0

正しいものを作成しているmyIntentことと、null でないことを確認してください (それ以外の場合は何もしていません...)

次の作成も変更します。

myIntent = new Intent(GMapsActivity.this, GMapsActivity1.class);
于 2012-07-06T06:54:14.233 に答える
0
 if(password.getText().toString().equals("admin")) {
             System.out.println("Entering");
             mapView.setVisibility(View.VISIBLE);
             login.setVisibility(View.INVISIBLE);
             password.setVisibility(View.INVISIBLE);
             myIntent = new Intent(v.getContext(), GMapsActivity1.class);

            } else {
            }
             startActivity(myIntent);

上記のコードは、myIntent がパスワードが admin の場合にのみ初期化され、それ以外の場合は初期化されないことを示しています..しかし、アクティビティを開始するために初期化されていなくても使用されています..

于 2012-07-06T06:54:26.603 に答える
0

このコードを試してください。

Intent myIntent = null;
if(password.getText().toString().equals("admin")) {
System.out.println("Entering");
mapView.setVisibility(View.VISIBLE);
login.setVisibility(View.INVISIBLE);
password.setVisibility(View.INVISIBLE);
myIntent = new Intent(GMapsActivity.this, GMapsActivity1.class);
startActivity(myIntent);
} else {
Toast.makeText(context, "password is invalid",  Toast.LENGTH_SHORT).show();
}
于 2012-07-06T06:54:59.610 に答える
0

書く代わりに

Intent myIntent = null;
myIntent = new Intent(v.getContext(), GMapsActivity1.class);

追加

Intent myIntent = new Intent(getApplicationContext(), GMapsActivity1.class);

また

Intent myIntent = new Intent(GMapsActivity.this, GMapsActivity1.class);
于 2012-07-06T06:55:13.597 に答える