2010-11-13 1 views
4

BlobCity.java: package BlobCity.xyz.com;Мое приложение получает непредвиденную ошибку, заставляет меня закрыть его ... что, по-видимому, проблема?

импорт java.io.BufferedReader;

импорт java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Map;

импорт android.app.Activity; импорт android.content.Intent; импорт android.content.pm.ActivityInfo; import android.net.Uri; import android.os.Bundle; импорт android.widget. *; импорт android.util.Log; импорт android.view.Gravity; импорт android.view.View; import android.view.View.OnClickListener;

импорт org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient;

Публичный класс BlobCity extends Деятельность { /** Вызывается, когда действие сначала создается. */ Кнопка signIn, зарегистрировать; TextView Blob, Город, имя пользователя, пароль; EditText eUsername, ePassword; @Override public void onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.main);

signIn = (Button) findViewById(R.id.signIn); 
register = (Button) findViewById(R.id.register); 

Blob = (TextView) findViewById(R.id.blob); 
City = (TextView) findViewById(R.id.city); 
username = (TextView) findViewById(R.id.username); 
password = (TextView) findViewById(R.id.password); 

eUsername = (EditText) findViewById(R.id.eUsername); 
ePassword = (EditText) findViewById(R.id.ePassword); 

signIn.setOnClickListener(new sendUserPass()); 
register.setOnClickListener(new regPage());   

} 

class sendUserPass implements Button.OnClickListener 
    { 
    public void onClick(View v) 
    {  
    String uname = eUsername.getText().toString(); 
    String pwd = ePassword.getText().toString(); 
    String requestString = ("http://192.168.1.102:8080/BlobCity/RemoteLogin?email="+ uname + "&pwd=" + pwd); 
    String line; 

     try {                                  
      HttpResponse response = new DefaultHttpClient().execute(new HttpGet(requestString)); 
      InputStream is = response.getEntity().getContent(); 
      BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
      StringBuilder rb = new StringBuilder(""); 

      while ((line=br.readLine()) != null) 
       { 
       rb.append(line) ;          
       } 
      if(rb.toString().equals("0")) 
      { 
      Toast toast = Toast.makeText(getApplicationContext(), "Please enter a valid Username and/or Password!", Toast.LENGTH_LONG); 
      toast.show(); 
      toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); 
      eUsername.setText(""); 
      ePassword.setText(""); 
      } 
      else 
      { 
       setContentView(R.layout.map); 
       eUsername.setText(""); 
       ePassword.setText(""); 

      } 
      } 

     catch (ClientProtocolException e) 
      { 
      e.printStackTrace(); 
      } 
     catch (IOException e) 
      { 
      e.printStackTrace(); 
      } 

    } 

    } 

class regPage implements Button.OnClickListener 
    { 
    public void onClick(View v) 
    { 
     Intent browse = new Intent(Intent.ACTION_VIEW , Uri.parse("http://www.blobcity.com")); 
     startActivity(browse);     
    } 
    } 

}

====================================== ======================================

main.xml:

=================== ================================================== =

myMapView.java: import java.util.List; импорт android.app.Activity; import android.os.Bundle; импорт android.widget.LinearLayout; import android.widget.Toast; импорт android.view.Gravity; import android.view.ViewGroup; импорт android.widget. *; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView;

public abstract class myMapView extends MapActivity{ 
/** Called when the activity is first created. */ 

MapView mapView;  

    public void onCreate(Bundle savedInstanceState) {      
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.map); 
     mapView = (MapView) findViewById(R.id.map); 
     mapView.setBuiltInZoomControls(true); 
     mapView.getController().setZoom(20); 
    } 
} 

=========================================== ===================================

map.xml:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <com.google.android.maps.MapView 
    android:id="@+id/map" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_margin="20dip" 
    android:clickable="true" 
    android:apiKey="the_key_that_i_have" /> 
</LinearLayout> 

================================================== =====================

manifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="BlobCity.xyz.com" 
    android:versionCode="1" 
    android:versionName="1.0"> 
    <uses-permission android:name="android.permission.INTERNET"/> 

    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <uses-library android:name="com.google.android.maps" /> 
     <activity android:name=".BlobCity" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
</manifest> 
+3

Какая ошибка вы получаете? Отправьте сообщение logcat pls –

+0

Распечатайте журнал ошибок, затем мы можем проверить, действительно ли проблема и возможно, пожалуйста, переформатируйте код. –

ответ

0

Во-первых, попробуйте получить трассировку стека, где ваше приложение выходит из строя. Это всегда помогает.

Во-вторых, вы действительно хотите, чтобы класс myMapView был абстрактным? Если нет, удалите ключевое слово abstract.

В-третьих, ваш манифест утверждает, что приложение имеет одно действие: BlobCity.xyz.com.BlobCity, но исходный код, который вы показываете, относится к классу myMapView (не может определить, в каком пакете).

Атрибут android:name в ярлыке действия в манифесте должен указывать на класс, который реализует действие, что здесь не так. Либо измените атрибут, либо добавьте новый тег активности, который указывает на класс, упомянутый выше.

Из того, что я могу видеть, я бы предположил, что вы заявляете, что класс BlobCity существует в пакете BlobCity.xyz.com., но когда система пытается найти класс, он нигде не будет найден.

+0

удаление ключевого слова «abstract» дает мне ошибку: тип myMapView должен реализовать унаследованный абстрактный метод MapActivity.isRouteDisplayed() – heha

+0

, и теперь я только что выдал свой полный проект ... так что вы могли бы понять, почему android: name атрибут указывает на blobcity – heha

2
  1. Ваш пакет package="BlobCity.xyz.com", кажется, написан назад. Должно быть package="com.xyz.BlobCity" и должно быть вашим фактическим пакетом, где находится ваш класс активности BlobCity.

  2. Проверьте, пожалуйста, create your Maps API Key? Вы должны поставить его здесь:

    android:apiKey="example_Maps_ApiKey_String" 
    

Отредактировано:

Вы не должны запускать длительные задачи (сетевые) внутри обработчиков событий. Это блокирует перерисовку пользовательского интерфейса (приложение кажется невосприимчивым) и может, наконец, привести к ANR error. Используйте AsyncTask для запуска своего сетевого кода в фоновом режиме.

+0

ya ... у меня есть ключ ..theres нет проблемы с этим – heha

+0

и "package =" BlobCity.xyz.com "" автоматически генерируется IDE – heha

+0

да, но вы ввели его где-то во время процесса установки проекта. –

Смежные вопросы