Tentando implementar CountryPicker a partir do github.Sem erros no código, o aplicativo falha, um monte de erros logcat

StackOverflow https://stackoverflow.com//questions/20026563

Pergunta

Parece que eu estou pedindo algo que tem sido feita no passado, mas ninguém conseguiu obter uma resposta, portanto, com os dedos cruzados.

Estou tentando implementar a o CountryPicker a partir do github.No entanto, ele parece não funcionar.Eu tinha tentado 2 3 maneiras possíveis para implementá-lo (pelo menos eu acho que houve 3).

  1. Primeiro foi adicionar o CountryPicker código dentro da minha aplicação e no topo do que implementar o exemplo de código de pasta (nao funciona)
  2. Segunda era, de alguma forma, alterar o código para fragmentactivity atividade (ainda não tentei isso ainda)
  3. Um terceiro foi para importar o CountryPicker código como uma biblioteca.Eu acho que era o caminho certo para fazê-lo, por isso listei os passos que eu ter feito para fazê-lo funcionar.

  1. Primeiro eu criei novo projeto android chamado CountryPickerApp e implementado o código da amostra de pasta encontrado dentro de que countrypicker repositório.Aqui está o código para MainActivity.class:

     package com.example.countrypickerapp;
     import android.os.Bundle;
     import android.support.v4.app.FragmentActivity;
     import android.support.v4.app.FragmentManager;
     import android.support.v4.app.FragmentTransaction;
     import android.view.Menu;
     import android.view.MenuItem;
     import android.view.MenuItem.OnMenuItemClickListener;
     import android.widget.Toast;
    
     import com.countrypicker.CountryPicker;
     import com.countrypicker.CountryPickerListener;
    
     public class MainActivity extends FragmentActivity {
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        FragmentManager manager = getSupportFragmentManager();
        FragmentTransaction transaction = manager.beginTransaction();
    
        CountryPicker picker = new CountryPicker();
        picker.setListener(new CountryPickerListener() {
    
            @Override
            public void onSelectCountry(String name, String code) {
                Toast.makeText(
                        MainActivity.this,
                        "Country Name: " + name + " - Code: " + code
                                + " - Currency: "
                                + CountryPicker.getCurrencyCode(code),
                        Toast.LENGTH_SHORT).show();
            }
        });
    
        transaction.replace(R.id.home, picker);
    
        transaction.commit();
    
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        MenuItem item = menu.findItem(R.id.show_dialog);
        item.setOnMenuItemClickListener(new OnMenuItemClickListener() {
    
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                CountryPicker picker = CountryPicker.newInstance("Select Country");
                picker.setListener(new CountryPickerListener() {
    
                    @Override
                    public void onSelectCountry(String name, String code) {
                        Toast.makeText(
                                MainActivity.this,
                                "Country Name: " + name + " - Code: " + code
                                        + " - Currency: "
                                        + CountryPicker.getCurrencyCode(code),
                                Toast.LENGTH_SHORT).show();
                    }
                });
    
                picker.show(getSupportFragmentManager(), "COUNTRY_PICKER");
                return false;
            }
        });
        return true;
    }
    

    }

  2. Aqui está o código para o AndroidManifest.xml arquivo

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.countrypickerapp"
     android:versionCode="1"
     android:versionName="1.0" >
    
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
           android:name="com.example.countrypickerapp.Main1Activity"
            android:label="@string/app_name" android:parentActivityName="@string/title_activity_main1">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
    
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
           android:name="com.example.countrypickerapp.MainActivity"
           android:label="@string/title_activity_main1" >
        </activity>
    </application>
    
    </manifest>
    
  3. Pelo que entendi a pasta principal (CountryPicker) teve de ser importado como uma biblioteca assim que eu segui esses passos:

File->New->Other
Select Android Project
Select "Create Project from existing source"
Click "Browse..." button and navigate to johannilsson-android-actionbar\actionbar
Finish (Now action bar project in your workspace)
Right-click on your project -> Properties
In Android->Library section click Add
select recently added project -> Ok
  1. E aqui está a lista de logcat log de erros:

    11-17 02:06:37.320: I/SurfaceTextureClient(9657): [STC::queueBuffer] this:0x4fa637f8, api:1, last queue time elapsed :5603 ms
    11-17 02:06:37.321: I/SurfaceTextureClient(9657): [0x4fa637f8] frames:2, duration:5.603000, fps:0.356932
    11-17 02:06:37.325: W/MMUMapper(9657): fail to register MVA, unsupported format(0x5)
    11-17 02:06:37.413: W/ActionMenuPresenter(9657): showOverflowMenu fail, mReserveOverflow=true, mMenu.getNonActionItems().size()=1, isOverflowMenuShowing()=false
    11-17 02:06:37.476: W/MMUMapper(9657): fail to register MVA, unsupported format(0x5)
    11-17 02:06:37.490: W/MMUMapper(9657): fail to register MVA, unsupported format(0x5)
    11-17 02:06:37.510: W/MMUMapper(9657): fail to register MVA, unsupported format(0x5)
    11-17 02:06:38.094: W/MMUMapper(9657): invalid operation for unregister MVA with VA(0x52b85000) size(57344) f(0x5)
    11-17 02:06:38.094: W/MMUMapper(9657): invalid operation for unregister MVA with VA(0x52cec000) size(57344) f(0x5)
    11-17 02:06:38.095: W/MMUMapper(9657): invalid operation for unregister MVA with VA(0x52cfa000) size(57344) f(0x5)
    11-17 02:06:38.102: W/InputEventReceiver(9657): Attempted to finish an input event but the input event receiver has already been disposed.
    11-17 02:06:40.889: W/MMUMapper(9657): invalid operation for unregister MVA with VA(0x528cf000) size(614400) f(0x5)
    11-17 02:06:40.890: W/MMUMapper(9657): invalid operation for unregister MVA with VA(0x52d6d000) size(614400) f(0x5)
    11-17 02:06:40.890: W/MMUMapper(9657): invalid operation for unregister MVA with VA(0x52aa9000) size(614400) f(0x5)
    11-17 02:10:40.214: E/Trace(10401): error opening trace file: No such file or directory (2)
    11-17 02:10:40.316: W/dalvikvm(10401): Unable to resolve superclass of Lcom/example/countrypickerapp/MainActivity; (11)
    11-17 02:10:40.316: W/dalvikvm(10401): Link of class 'Lcom/example/countrypickerapp/MainActivity;' failed
    11-17 02:10:40.317: E/dalvikvm(10401): Could not find class 'com.example.countrypickerapp.MainActivity', referenced from method com.example.countrypickerapp.Main1Activity$1.onClick
    11-17 02:10:40.317: W/dalvikvm(10401): VFY: unable to resolve const-class 57 (Lcom/example/countrypickerapp/MainActivity;) in Lcom/example/countrypickerapp/Main1Activity$1;
    11-17 02:10:40.505: W/MMUMapper(10401): fail to register MVA, unsupported format(0x5)
    11-17 02:10:40.615: W/MMUMapper(10401): fail to register MVA, unsupported format(0x5)
    11-17 02:10:42.480: I/SurfaceTextureClient(10401): [0x4fa637f8] frames:2, duration:1.945000, fps:1.027828
    11-17 02:10:42.499: W/MMUMapper(10401): fail to register MVA, unsupported format(0x5)
    11-17 02:10:42.619: W/dalvikvm(10401): threadid=1: thread exiting with uncaught exception (group=0x41269908)
    11-17 02:10:42.638: E/AndroidRuntime(10401): FATAL EXCEPTION: main
    11-17 02:10:42.638: E/AndroidRuntime(10401): java.lang.NoClassDefFoundError: com.example.countrypickerapp.MainActivity
    11-17 02:10:42.638: E/AndroidRuntime(10401): at com.example.countrypickerapp.Main1Activity$1.onClick(Main1Activity.java:22)
    11-17 02:10:42.638: E/AndroidRuntime(10401): at android.view.View.performClick(View.java:4091)
    11-17 02:10:42.638: E/AndroidRuntime(10401): at android.view.View$PerformClick.run(View.java:17072)
    11-17 02:10:42.638: E/AndroidRuntime(10401): at android.os.Handler.handleCallback(Handler.java:615)
    11-17 02:10:42.638: E/AndroidRuntime(10401): at android.os.Handler.dispatchMessage(Handler.java:92)
    11-17 02:10:42.638: E/AndroidRuntime(10401): at android.os.Looper.loop(Looper.java:153)
    11-17 02:10:42.638: E/AndroidRuntime(10401): at android.app.ActivityThread.main(ActivityThread.java:5037)
    11-17 02:10:42.638: E/AndroidRuntime(10401): at java.lang.reflect.Method.invokeNative(Native Method)
    11-17 02:10:42.638: E/AndroidRuntime(10401): at java.lang.reflect.Method.invoke(Method.java:511)
    11-17 02:10:42.638: E/AndroidRuntime(10401): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825)
    11-17 02:10:42.638: E/AndroidRuntime(10401): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:588)
    11-17 02:10:42.638: E/AndroidRuntime(10401): at dalvik.system.NativeStart.main(Native Method)
    

Additonally eu adicionei um adicional de Atividade de chamado MainActivity1 que tem um botão que, quando clicado, redireciona para MainActivity onde CountryPicker é implementado.

Espero ter explicado o meu problema e irá obter uma solução, sugestão, dica ou qualquer coisa que pudesse me mais perto de chegar ao trabalho.Eu sei que eu poderia ter reimplementado tudo do zero, usando métodos diferentes, mas eu não consigo ver um ponto de reinventar algo que já foi implementado e enviado para a partilha, para além de aprender algo novo, é claro.

Foi útil?

Solução

O manifesto declara Principal Atividade 1 (espaço adicionado para realçar o algarismo 1), mas o seu arquivo de classe é MainActivity.java sem o 1 !!:)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top