从一个活动移动到另一个 - android

问题描述:

我在android中有以下屏幕设置。点击screen1上的按钮,点击屏幕2。屏幕2在屏幕底部有2个按钮。一个按钮显示可搜索的listView,另一个按钮则将您带回screen1。对于屏蔽1代码:从一个活动移动到另一个 - 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的清单:

<?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的按钮去反应迟钝我切换到画面2的时刻。 logcat上没有输出,没有任何东西。
2.甚至可能在获取列表视图时出现错误,但我无法看到任何内容。

欢迎任何帮助,
Sriram。

+0

嗨斯利拉姆是有什么毛病我的答案贴在下面。 – Vivek 2011-01-20 13:39:47

+0

@HellBoy:没有没有。您发布的代码运作良好。我只是做了一些补充,以确保按钮也有焦点。我在评论中提到你的回应。 – Sriram 2011-01-21 06:27:27

+0

嗨 我试过这个例子,因为它是应用程序是强制关闭? 我用Saurabh的建议有什么我做错了吗? 谢谢 – 2011-02-08 11:06:05

我复制你的代码Eclipse和测试。

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> 

您的代码将工作。

但是你点击了“显示国家”你的listview填充整个屏幕。而且你的按钮再次变得无法点击。我的建议是,给你的listview一些最大的大小,它应该占用多少,以便你的按钮保持可点击。

我猜是因为列表视图中的fill_parent,你的按钮可能没有得到重点。

更改按钮2码本

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

有)没有必要创建一个新的意图完成(会做的工作

我复制并测试上面的代码,但应用程序一直运行到的力接近,直到下一个变化是在ScreenChange取得


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