Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用参数激活活动?_Java_Android_Constructor - Fatal编程技术网

Java 如何使用参数激活活动?

Java 如何使用参数激活活动?,java,android,constructor,Java,Android,Constructor,我创建了一个活动类并定义了一个构造函数: public class Spinner_Name extends Activity{ List<String> listSp; public Spinner_Name(List<String> list) { listSp = new ArrayList<String>(); listSp = list;

我创建了一个活动类并定义了一个构造函数:

   public class Spinner_Name extends Activity{

        List<String> listSp;
        public Spinner_Name(List<String> list)
        {
            listSp = new ArrayList<String>();
            listSp = list;
        }


        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.spinner_layout);

        }
}
公共类微调器\u Name扩展活动{
列表列表sp;
公共微调器名称(列表)
{
listSp=newarraylist();
listSp=列表;
}
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.spinner\u布局);
}
}
我想从这个活动中调用这个活动:

 public class MAIN extends Activity{

            List<String> listSp;


            @Override
            public void onCreate(Bundle savedInstanceState)
            {
                // TODO Auto-generated method stub
                super.onCreate(savedInstanceState);
                setContentView(R.layout.spinner_layout);
                 listSp = new ArrayList<String>();
                  listSp.add("a");

            }
    }
public类主扩展活动{
列表列表sp;
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.spinner\u布局);
listSp=newarraylist();
列表SP.添加(“a”);
}
}
但当我运行应用程序时,会显示以下消息:

不幸的是,主管道已经停止

当我从构造函数中删除参数时,应用程序将成功运行。如何使用参数运行活动???

“您从不直接构造活动,因此无法使用它传递参数。”您可以在
onCreate()
上执行操作

您可以使用
Bundle
将参数从一个活动发送到另一个活动,例如发送
int

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
Bundle b = new Bundle();
b.putInt("key", 1); //Your id
intent.putExtras(b); //Put your id to your next Intent
startActivity(intent);
finish();
并从新打开的活动中获取该值:

Bundle b = getIntent().getExtras();
int value = b.getInt("key");
要发送列表,您需要将
列表
复制到
数组
并发送
数组

List<String> a;
String[] b = new String[a.size()];
a.toArray(b);
Bundle c=new Bundle();
c.putStringArray("myList", b);     
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtras(c)
startActivity(intent);
finish();

您不应该为扩展活动的类编写构造函数。您应该在声明字段的地方或在
onCreate()
中初始化任何字段。如果需要将
ArrayList
从一个活动传递到另一个活动,则应使用
putExtra
意图存储
ArrayList
,并使用
getExtra
再次检索它。

我认为这不是解决问题的方法,但这两行没有意义:

listSp = new ArrayList<String>();
listSp = list;
listSp=newarraylist();
listSp=列表;

创建新的ArrayList对象,然后立即覆盖引用。所以垃圾收集器会把它扔掉。

listSp.add(“a”);不正确。请完成您的列表sp.add(“a”);谢谢,但请更详细地为我描述一下,目前您有两个对象:参数ArrayList对象,它在构造函数中转发,以及您使用
listSp=new ArrayList()行创建的对象
我不是舒尔。Baschdl,我曾经删除构造函数中的实现代码并运行它,但我看到了错误!!!!我认为应该是这样的:
List listSp;public Spinner\u Name(List List List){listSp=List;}
这可以根据您的建议进行。好的,但没问题。对不起,我不明白这一点?
listSp = new ArrayList<String>();
listSp = list;