这是我将值传递给名为choice的类的主要活动。
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String x="";
for(int i=0;i<count;i++)
{
x+=songf[i]+" ";
}
Toast.makeText(getApplicationContext(), x, Toast.LENGTH_SHORT).show();
Choice o = new Choice();
o.initializeit(songf,sizef,linkf,indexf,count);
Intent ix=new Intent("com.example.harmony.CHOICE");
startActivity(ix);
}
/*public void doit()
{
Choice o = new Choice();
o.initializeit(songf,sizef,linkf,indexf,count);
}
*/
这是课程选择
public class Choice extends Activity implements OnClickListener{
Button b;
RadioButton rb1,rb2,rb3,rb4 ;
RadioGroup rg;
static String[] songf = new String[19];
static Integer[] indexf = new Integer[19];
static String[] linkf = new String[19];
static double[] sizef = new double[19];
static int count;
public static void initializeit(String[] song, double[] size, String[] link,Integer[] index, int c) {
// TODO Auto-generated method stub
songf=song;
sizef=size;
indexf=index;
linkf=link;
count=c;
String x="";
//x+=Integer.toString(count);
//Toast.makeText(getApplicationContext(), x, Toast.LENGTH_SHORT).show();
//for(int i=0;i<count;i++)
//{
// x+=songf[i]+" ";
// }
// Toast.makeText(getApplicationContext(), x, Toast.LENGTH_SHORT).show();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.choice);
b = (Button) findViewById(R.id.download);
rg = (RadioGroup) findViewById(R.id.radioGroup1);
rb1 = (RadioButton) findViewById(R.id.fcfs);
rb2 = (RadioButton) findViewById(R.id.sjf);
rb3 = (RadioButton) findViewById(R.id.priority);
b.setOnClickListener(this);
MainActivity o = new MainActivity();
o.doit();
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(rb1.isChecked())
{
for(int i=0;i<count;i++)
{
for(int j=0;j<count-i-1;j++)
{
if(indexf[j]>indexf[j+1])
{
int temp1=indexf[j];
indexf[j]=indexf[j+1];
indexf[j+1]=temp1;
String temp2=linkf[j];
linkf[j]=linkf[j+1];
linkf[j+1]=temp2;
String temp3=songf[j];
songf[j]=songf[j+1];
songf[j+1]=temp3;
double temp4=sizef[j];
sizef[j]=sizef[j+1];
sizef[j+1]=temp4;
}
}
}
String x="";
for(int i=0;i<count;i++)
{
x+=songf[i]+" ";
}
Toast.makeText(getApplicationContext(), x, Toast.LENGTH_SHORT).show();
}
else if(rb2.isChecked())
{
for(int i=0;i<count;i++)
{
for(int j=0;j<count-i-1;j++)
{
if(sizef[j]>sizef[j+1])
{
double temp1=sizef[j];
sizef[j]=sizef[j+1];
sizef[j+1]=temp1;
String temp2=linkf[j];
linkf[j]=linkf[j+1];
linkf[j+1]=temp2;
String temp3=songf[j];
songf[j]=songf[j+1];
songf[j+1]=temp3;
int temp4=indexf[j];
indexf[j]=indexf[j+1];
indexf[j+1]=temp4;
}
}
}
String x="";
for(int i=0;i<count;i++)
{
x+=songf[i]+" ";
}
x+=Integer.toString(count)+songf[0]+indexf[0];
Toast.makeText(getApplicationContext(), x, Toast.LENGTH_SHORT).show();
}
else if(rb3.isChecked())
{
String x="";
for(int i=0;i<count;i++)
{
x+=songf[i]+" ";
}
Toast.makeText(getApplicationContext(), x, Toast.LENGTH_SHORT).show();
}
}
}
初始化初始化的字符串值未初始化并为我提供空值。我无法理解这个问题。请帮帮我。
答案 0 :(得分:1)
您应该以这种方式传递数据:
Intent intent = new Intent(this, Choice.class);
intent.putExtra("fname", "My first name");
intent.putExtra("lname", "My last name");
startActivity(intent);
以Choice.class
方式检索数据:
Intent intent = getIntent();
String fName = intent.getStringExtra("fname");
String lName = intent.getStringExtra("lname");
使用方法putExtra("key", value);
和getExtra("key");
除非你想在那里导航,否则你不应该创建任何Activity
的实例。查看更多详情doc。
答案 1 :(得分:0)
使用 putExtra()
将数据从一个Activity
传递到其他
intent.putExtra("KEY", "DATA_TO_BE_SENT");
在第二个活动中,您必须使用
检索值getIntent().getStringExtra("KEY");
因此,在您的代码中,
Choice o = new Choice();
o.initializeit(songf,sizef,linkf,indexf,count);
Intent ix=new Intent("com.example.harmony.CHOICE");
startActivity(ix);
必须替换为
Intent ix=new Intent("com.example.harmony.CHOICE");
intent.putExtra("KEY", "DATA_TO_BE_SENT");
startActivity(ix);
答案 2 :(得分:0)
如果要将某些数据从一个活动传输到另一个活动,则必须使用Intent。
Intent intent = new Intent(this, Choice.class);
**intent.putExtra()** // insert here your data !
startActivity(intent);
在此处搜索更多信息.putExtra http://developer.android.com/training/basics/firstapp/starting-activity.html
答案 3 :(得分:0)
共享元素必须由Intent.putExtra传递
发送:
Intent i = new Intent(this, ActivityTwo.class);
i.putExtra("Value1", "This value one for ActivityTwo ");
i.putExtra("Value2", "This value two ActivityTwo");
收到:
Bundle extras = getIntent().getExtras();
if (extras != null) {
// get data via the key
String value1 = extras.getString("Value1");
if (value1 != null) {
// do something with the data
}
}
答案 4 :(得分:0)
startActivity调用不会启动您创建的Choice实例,您可以将其视为向应用程序发送消息以创建类型为Choice的新活动。
如果您想将信息传递给活动,请在&#34; extra&#34;意图中的信息。然后,您可以在选择活动的onCreate中从附加内容中检索信息。
答案 5 :(得分:0)
Intent ix=new Intent(this ,Choice.class);
这可能有用。
要传递值,您需要添加以下代码
ix.putExtra("key_name",value);
而不是写ix.startActivity();
要检索您可以使用getIntent().getStringExtra("key_name");
答案 6 :(得分:0)
您是否尝试将数据从主要活动传递到Choice活动?难道 我告诉你了吗?如果是这样,我建议使用Intent类的putExtra / s方法。然后,在Choice活动中,通过调用Activity类的getIntent()方法来检索附加内容,该方法返回启动活动的意图。然后使用Intent类的getExtra / s方法。 请注意,主要是您可以放置原始数据类型,原始数据类型数组以及我建议您探索的其他类。 所以,在MainActivity中:
Intent intent = new Intent(this, SomeOtherActivity.class);
intent.putExtra(KEY, new String("some data")); //Remember to check out
// which values you can pass in the Intent documentation
startActivity(intent);
并在SomeOtherActivity中检索数据
Intent intent = getIntent();
String data = intent.getStringExtra(KEY);
// Notice that because i passed am String value, I'm using the
// corresponding method to retrieve the data. Also in the Intent documentation
还有一种方法可以传递服装对象,使它们实现Serializable类,并使用它传递它们 putExtra(String key,Serializable value)方法,并通过调用Intent.getSerializableExtra(String key)方法检索数据。
我建议你阅读一些关于这个主题的教程。 这是我的一个偏爱,Vogella教程。 Intent tutorial. 祝你好运!