Cercando di implementare CountryPicker da github.Nessun errore nel codice, arresti anomali dell'app, molti errori logcat

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

Domanda

Sembra che io stia chiedendo qualcosa che è stato chiesto in passato, ma a cui nessun altro è riuscito a ottenere una risposta, quindi incrociamo le dita.

Sto cercando di implementare il CountryPicker di github.Tuttavia non sembra funzionare.Avevo provato 2 dei 3 modi possibili per implementarlo (almeno penso che ce ne fossero 3).

  1. Il primo era di aggiungere il codice CountryPicker all'interno della mia applicazione e in cima a quello implementare il codice della cartella di esempio (ha fatto funzionare)
  2. Il secondo è stato in qualche modo cambiare il codice di frammentazione in attività (non l'ha provato ancora)
  3. Il terzo era importare il codice CountryPicker come libreria.Credo che... che era il modo giusto per farlo, quindi ho elencato i punti I hanno fatto per farlo funzionare.

  1. Per prima cosa ho creato un nuovo progetto Android chiamato CountryPickerApp e ho implementato il codice dalla cartella di esempio trovata nel repository countrypicker.Ecco il codice per 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. Ecco il codice per il file AndroidManifest.xml

    <?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. Per quanto ho capito, la cartella principale (CountryPicker) doveva essere importata come libreria, quindi ho seguito questi passaggi:

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. Ed ecco l'elenco degli errori di registro logcat:

    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)
    

Inoltre ho aggiunto un'attività aggiuntiva chiamata MainActivity1 che ha un pulsante che, se cliccato, reindirizza a MainActivity dove è implementato CountryPicker.

Spero di aver spiegato bene il mio problema e di ricevere una soluzione, un suggerimento, un suggerimento o qualsiasi cosa che possa avvicinarmi al funzionamento.So che avrei potuto reimplementare tutto da zero utilizzando metodi diversi, ma non vedo il motivo di reinventare qualcosa che è già stato implementato e caricato per la condivisione, a parte ovviamente imparare qualcosa di nuovo.

È stato utile?

Soluzione

Il tuo manifest dichiara Principale 1 attività (spazio aggiunto per evidenziare il numerico 1) ma il file della tua classe è MainActivity.java senza 1 !!:)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top