2011-01-19 4 views
0

J'ai la configuration d'écran suivante dans android. Un bouton sur l'écran1 en cliquant sur lequel vous êtes amené à l'écran2. Screen2 a 2 boutons en bas de l'écran. Un bouton qui affiche une liste de recherche et l'autre qui vous ramène à screen1. Le code pour screen1:Passer d'une activité à l'autre - android

screen1.java 

package com.example.screenchange; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 

public class ScreenChange extends Activity { 
    /** Called when the activity is first created. */ 

    private Button button01; 

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

     button01 = (Button)findViewById(R.id.button01); 
     button01.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Log.v(this.toString(), "Inside on click listener for screen 2."); 
       Intent intent = new Intent(v.getContext(), screen2.class); 
       Log.v(this.toString(), "Intent created. Moving to start activity."); 
       startActivity(intent); 
      } 
     }); 
    } 
} 

screen1.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 

    <Button 
     android:id="@+id/button01" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Move to screen 2" 
     /> 

</LinearLayout> 

Screen2.java:

package com.example.screenchange; 

import java.util.ArrayList; 
import java.util.List; 

import android.app.ListActivity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 

public class screen2 extends ListActivity { 

    private Button button02; 
    private Button button03; 

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

     button02 = (Button)findViewById(R.id.button02); 
     button02.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Log.v(this.toString(), "Button02 clicked."); 
       Intent intent = new Intent(); //takes control back to screen1. 
       finish(); 
      } 
     }); 

     button03 = (Button)findViewById(R.id.button03); 
     button03.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Log.v(this.toString(), "Button03 clicked."); 

       ArrayAdapter<String> listView = new ArrayAdapter<String>(v.getContext(), R.layout.listview, COUNTRIES); 
       setListAdapter(listView); 
       getListView().setTextFilterEnabled(true); 

      } 
     }); 
    } 

    static final String[] COUNTRIES = new String[] { 
     "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra", 
     "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina", 
     "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan", 
     "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium", 
     "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia", 
     "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil", "British Indian Ocean Territory", 
     "British Virgin Islands", "Brunei", "Bulgaria", "Burkina Faso", "Burundi", 
     "Cote d'Ivoire", "Cambodia", "Cameroon", "Canada", "Cape Verde", 
     "Cayman Islands", "Central African Republic", "Chad", "Chile", "China", 
     "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo", 
     "Cook Islands" 
} 

screen2.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:text="Welcome to screen 2"> 

    <Button 
    android:id="@+id/button02" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Get back to screen 1." 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:clickable="true"> 
    </Button> 

    <Button 
    android:id="@+id/button03" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    android:text="Display countries." 
    android:clickable="true"> 
    </Button> 

    <ListView 
    android:id="@+android:id/android:list" 
    android:layout_height="fill_parent" 
    android:layout_width="wrap_content" 
    android:text="@id/text1"> 
    </ListView> 

</RelativeLayout> 

listview.xml:

<?xml version="1.0" encoding="utf-8"?> 
<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/text1"> 
</TextView> 

android-manifeste:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.example.screenchange" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".ScreenChange" 
        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=".screen2" 
      android:label="Screen 2 - New actvity."> 
     </activity> 
    </application> 


</manifest> 

Les problèmes que je reçois sont les suivants: 1. Les
boutons screen2 vont ne répond pas au moment où je passe à screen2. Pas de sortie sur le logcat, rien du tout.
2. Il peut même y avoir des erreurs dans l'affichage de la liste, mais je ne vois rien. Toute aide est la bienvenue,
Sriram

+0

Salut Sriram est il y a quelque chose de mal avec ma réponse affichée ci-dessous. – Vivek

+0

@HellBoy: non, il n'y en a pas. Le code que vous avez posté a bien fonctionné. J'ai juste dû faire quelques ajouts pour m'assurer que les boutons aussi avaient le focus. Ce que j'ai mentionné dans le commentaire de votre réponse. – Sriram

+0

Salut J'ai essayé cet exemple tel quel mais l'application est la fermeture forcée? J'ai utilisé la suggestion de Saurabh, y at-il quelque chose que je fais de mal? Merci –

Répondre

1

Je copiais votre éclipse de code et testé.

screen2.xml: fichier

<ListView 
    android:id="@+android:id/android:list" 
    android:layout_height="wrap_content"// instead of fill_parent 
    android:layout_width="wrap_content" 
    android:text="@id/text1"> 
    </ListView> 

votre code fonctionnera.

Mais si vous avez cliqué sur "Afficher les pays", votre liste affiche l'intégralité de l'écran. Et vos boutons ne sont plus cliquables. Ma suggestion est de donner une taille maximale à votre listview, combien elle devrait occuper pour que votre bouton reste cliquable.

Je suppose que grâce à fill_parent dans la vue liste, votre bouton pourrait ne pas avoir le focus.

+0

C'est ce qu'il a fait. Couplé avec android: layout_above = "@ id/button03" maintient également la liste au-dessus des boutons et des boutons eux-mêmes. Merci beaucoup HellBoy !! – Sriram

0

changer votre code button2 à ce

button02.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Log.v(this.toString(), "Button02 clicked."); 
      finish(); 
     } 
    }); 

il n'y a pas besoin de créer une nouvelle finition intention() fera le travail

+0

Merci pour votre réponse! J'ai eu la bonne réponse comme ci-dessus. – Sriram

1

j'ai copié et testé le code ci-dessus, mais l'application rencontrais la force de fermeture, jusqu'à ce que la modification suivante a été faite en ScreenChange


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

Questions connexes