Android:如何通过单击ListView中的项目从一个活动切换到另一个活动

时间:2011-10-07 08:40:01

标签: android android-listview android-activity

我制作了包含播放,设置,退出的菜单列表。但是点击按钮并没有把我带到所需的活动,列表工作者没有工作......任何人都可以帮我解决问题..将会感谢... 是的,它是一个列表视图控件..

我的代码中有两个错误 @@新的AdapterView.OnItemClickListener(){}类型必须实现继承的抽象方法AdapterView.OnItemClickListener.onItemClick(AdapterView,View,int,long)@@ in LINE1

另一个是@@ View无法解析为第2行中的@@类型 “实际上,当我点击主菜单屏幕中的项目时,我想从一个屏幕切换到另一个屏幕”

以下是主菜单的代码

public class MenuActivity extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu);
        ListView menuList = (ListView) findViewById(R.id.list);
        String[] items = {
            getResources().getString(R.string.pla),
            getResources().getString(R.string.sco),
            getResources().getString(R.string.set),
            getResources().getString(R.string.hel),
            getResources().getString(R.string.qui)
        };
        ArrayAdapter < String > adapt = new ArrayAdapter < String > (this, R.layout.menu_items, items);
        menuList.setAdapter(adapt);
        menuList.setOnItemClickListener(new AdapterView.OnItemClickListener() { //LINE 1 error 
            public void onItemClick(AdapterView <? > parent, View itemClicked, //LINE 2 error
                int position, long id) {
                TextView textView = (TextView) itemClicked;
                String strText = textView.getText().toString();
                if (strText.equalsIgnoreCase(getResources().getString(
                    R.string.pla))) {
                    // Game
                    startActivity(new Intent(MenuActivity.this,
                        GameActivity.class));
                } else if (strText.equalsIgnoreCase(getResources().getString(
                    R.string.hel))) {
                    // Help
                    startActivity(new Intent(MenuActivity.this,
                        HelpActivity.class));
                } else if (strText.equalsIgnoreCase(getResources().getString(
                    R.string.set))) {
                    //Settings 
                    startActivity(new Intent(MenuActivity.this,
                        SettingsActivity.class));
                } else if (strText.equalsIgnoreCase(getResources().getString(
                    R.string.sco))) {
                    //  Scores 
                    startActivity(new Intent(MenuActivity.this,
                        ScoresActivity.class));
                }
            }
        });
    }
}

3 个答案:

答案 0 :(得分:0)

使用意图

Intent play= new Intent(getApplicationContext(),Play.class);
startActivity(play);

有很多关于菜单的教程

答案 1 :(得分:0)

ListView lv = ...;
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0,View arg1, int arg2, long arg3) 
{
  //Do Your Stuff
}
});

或者您可以制作自定义适配器并编写按钮的单击事件

答案 2 :(得分:0)

可以使用名为Intents的android主要构建块之一和属于您的Activity类的方法之一public void startActivity (Intent intent)来完成此任务。

intent是要执行的操作的抽象描述。它可以与startActivity一起用于启动Activity,broadcastIntent用于将其发送到任何感兴趣的BroadcastReceiver组件,startService(Intent)或bindService(Intent,ServiceConnection,int)用于与后台服务进行通信。

Intent提供了一种工具,用于在不同应用程序中的代码之间执行延迟运行时绑定。它最重要的用途是发起活动,它可以被认为是活动之间的粘合剂。它基本上是一个被动数据结构,包含要执行的动作的抽象描述。

参阅官方文档 - http://developer.android.com/reference/android/content/Intent.html

public void startActivity (Intent intent) - 用于启动新活动。

假设你有两个Activity类,按一下按钮OnClickListener()你想从一个Activity移动到另一个Activity然后 -

  1. PresentActivity - 这是您想要进行第二项活动的当前活动。

  2. NextActivity - 这是您要移动的下一个活动。

  3. 所以Intent就像这样

    Intent(PresentActivity.this, NextActivity.class)
    

    最后这将是完整的代码

      public class PresentActivity extends Activity {
            protected void onCreate(Bundle icicle) {
                super.onCreate(icicle);
    
                setContentView(R.layout.content_layout_id);
    
                final Button button = (Button) findViewById(R.id.button_id);
                button.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View v) {
                        // Perform action on click   
    
                        Intent activityChangeIntent = new Intent(PresentActivity.this, NextActivity.class);
    
                        // currentContext.startActivity(activityChangeIntent);
    
                        PresentActivity.this.startActivity(activityChangeIntent);
                    }
                });
            }
        }
    

    此示例与按钮点击有关,您可以在任意位置使用代码编写任何内容,只需在您OnClickListener()的活动之间切换按钮点击setOnItemClickListener