类型活动中的方法 startactivity(intent,bundle) 不适用于参数 (int,intent)

Posted

技术标签:

【中文标题】类型活动中的方法 startactivity(intent,bundle) 不适用于参数 (int,intent)【英文标题】:the method startactivity(intent,bundle) in the type activity is not applicable for the argument (int,intent) 【发布时间】:2015-09-12 21:44:05 【问题描述】:

我想使用意图将列表视图中主要活动的活动链接到其他活动。

当我使用意图链接它并将结果定向到 mainactivity 中具有 id (R.id.main) 的框架布局时,它会发生问题。

谁能帮帮我?

问题StartActivity(intent, R.id.main)

  String [] menus=getResources().getStringArray(R.array.menus);

  //currently selected river
  data=menus[pos];
  if (data.equals("One")) 
        Intent intent = new Intent(MainActivity.this, Home.class);
        startActivity(intent,R.id.main);
  
  else if (data.equals("Two")) 
        Intent in = new Intent(MainActivity.this, Page1.class);
        startActivity(in,R.id.main);
                                               
  else if(data.equals("Three"))
        Intent inte = new Intent(MainActivity.this, Page2.class);
        startActivity(inte,R.id.main);                 
  

【问题讨论】:

请用代码澄清您的问题 【参考方案1】:
 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.menus));

 final DrawerLayout drawer = (DrawerLayout)findViewById(R.id.drawer_layout);
 final ListView navList = (ListView) findViewById(R.id.drawer);

 navList.setAdapter(adapter);

 ImageView burger=(ImageView) findViewById(R.id.btnback) ;
 burger.setOnClickListener(new View.OnClickListener () 

        @Override
        public void onClick (View v) 
            drawer.openDrawer(navList);

           

        );



 navList.setOnItemClickListener(new OnItemClickListener()
     @Override
     public void onItemClick(AdapterView<?> parent, View view, final int pos,long id)

         String [] menus=getResources().getStringArray(R.array.menus);

            //currently selected river
            data=menus[pos];
                     if (data.equals("One")) 
                        Intent intent = new Intent(MainActivity.this, Home.class);
                        startActivity(intent,R.id.main);
                    
                    else if (data.equals("Two")) 
                        Intent in = new Intent(MainActivity.this, Page1.class);
                        startActivity(in);
                    


                    else if(data.equals("Three"))
                        Intent inte = new Intent(MainActivity.this, Page2.class);
                        startActivity(inte);

【讨论】:

【参考方案2】:

startActivity() 方法将第二个参数作为Bundle。但是您正在传递一个 int 值。 从此更改您的代码

Intent intent = new Intent(MainActivity.this, Home.class);
startActivity(intent,R.id.main);

进入这个

 Intent in = new Intent(MainActivity.this, Page1.class);
 startActivity(in);

【讨论】:

无论如何,感谢您的解决方案。但是,我想将意图的结果定向到具有 id (R.id.main) 的框架布局。你能解决吗? 你应该在 Page1 Activity 中处理它。【参考方案3】:

尝试如下,

        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
        Bundle mBundle = new Bundle();
        mBundle.putInt("key", R.id.main);
        intent.putExtras(mBundle);
        startActivity(intent);

所以您的程序在更改

之后将看起来像

String[] menus = getResources().getStringArray(R.array.menus);

    // currently selected river
    data = menus[pos];
    if (data.equals("One")) 

        Intent intent = new Intent(MainActivity.this, Home.class);
        Bundle mBundle = new Bundle();
        mBundle.putInt("key", R.id.main);
        intent.putExtras(mBundle);
        startActivity(intent);
     else if (data.equals("Two")) 
        Intent intent = new Intent(MainActivity.this, Page1.class);
        Bundle mBundle = new Bundle();
        mBundle.putInt("key", R.id.main);
        intent.putExtras(mBundle);
        startActivity(intent);
    

    else if (data.equals("Three")) 
        Intent intent = new Intent(MainActivity.this, Page2.class);
        Bundle mBundle = new Bundle();
        mBundle.putInt("key", R.id.main);
        intent.putExtras(mBundle);
        startActivity(intent);

    

获取目标Activity上的值

myVariable = getIntent().getExtras().getInt("key");

希望这会有所帮助...谢谢

【讨论】:

以上是关于类型活动中的方法 startactivity(intent,bundle) 不适用于参数 (int,intent)的主要内容,如果未能解决你的问题,请参考以下文章

Android - 从 startActivity 获取活动对象

启动一个新的页面

startActivity(Intent) 每次都在破坏活动,为啥?

无法解析方法 startActivity()

在 startActivity() 上传递一个 Bundle?

为啥 context.startActivity(intent) 没有启动活动以及如何在 android 中处理异常?