【问题标题】:Android: how do i switch from one activity to another by clicking items from the ListViewAndroid:如何通过单击 ListView 中的项目从一个活动切换到另一个活动
【发布时间】:2011-10-07 08:40:00
【问题描述】:

我已经制作了包含播放、设置、退出的菜单列表。但是单击按钮并没有将我带到所需的活动,listner 无法正常工作..任何人都可以帮我解决问题.. 谢天谢地.. 是的,它是一个列表视图控件..

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

另外一个是@@ View cannot be resolved to a type@@ in LINE 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));
                }
            }
        });
    }
}

【问题讨论】:

  • 请详细说明问题。分享您的代码,以便我可以看到问题在哪里?
  • 只是为了确保没有误解:你有一个 ListView 或一个包含项目(播放、退出、...)的菜单吗?
  • 澄清你在用什么?列表视图或菜单???

标签: android android-listview android-activity


【解决方案1】:
ListView lv = ...;
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0,View arg1, int arg2, long arg3) 
{
  //Do Your Stuff
}
});

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

【讨论】:

    【解决方案2】:

    使用意图

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

    有很多关于菜单的教程

    【讨论】:

      【解决方案3】:

      可以使用名为 Intents 的 android 主要构建块之一和属于您的 Activity 类的方法之一 public void startActivity (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 移动到另一个然后 --

      1. PresentActivity -- 这是您当前的活动,您想从中进行第二个活动。

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

      所以 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中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多