Переход от одного занятия к другому - Android - PullRequest
0 голосов
/ 19 января 2011

У меня есть следующая настройка экрана в Android.Кнопка на экране1, при нажатии которой вы попадаете на экран2.Screen2 имеет 2 кнопки в нижней части экрана.Одна кнопка отображает доступный для поиска listView, а другая возвращает вас на экран1.Код для screen1:

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-manifest:

<?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>   

Проблемы, с которыми я сталкиваюсь, следующие:
1. Кнопки на экране2 перестают отвечать на запросыЯ переключаюсь на screen2.Нет вывода на logcat, нет ничего.
2. Могут даже быть ошибки при отображении списка, но я не могу его увидеть.

Любая помощь приветствуется,
Шрирам.

Ответы [ 3 ]

1 голос
/ 19 января 2011

Я скопировал ваш код затмения и протестировал.

screen2.xml: файл

  <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> 

ваш код будет работать.

Но один из тех, что вы нажали "Показать страны", ваш список просмотра заполнить весь экран. И ваша кнопка снова становится неактивной. Мое предложение состоит в том, чтобы придать вашему списку максимальный размер, который он должен занимать, чтобы ваша кнопка оставалась активной.

Я думаю, из-за fill_parent в представлении списка ваша кнопка может не получить фокус.

1 голос
/ 09 апреля 2011

Я скопировал и протестировал вышеуказанный код, но приложение продолжало работать в принудительном режиме, пока в ScreenChange не было сделано следующее изменение

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

0 голосов
/ 19 января 2011

измените свой код button2 на этот

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

нет необходимости создавать новое намерение. Finish () сделает работу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...