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;