class1.java创建了一个需要在class2.java中拥有的float []数组。你怎么做到这一点? float []是点。这是一个示例代码:
class1.java
import android.app.Activity;
import android.content.Context;
import android.app.ListActivity;
import android.content.Intent;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.view.Display;
import android.view.SurfaceHolder;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
public class class1 extends Activity implements OnClickListener {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
float[] points = new float[100];
}
}
class2.java
import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.DashPathEffect;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
public class graph extends Activity{
DemoView demoview;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
demoview = new DemoView(this);
setContentView(demoview);
}
private class DemoView extends View{
public DemoView(Context context){
super(context);
}
@Override protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawLines(points, paint);
}
}
}
答案 0 :(得分:2)
这似乎比首次出现更难,因为它不是java问题而是android问题。有关详细信息,请参阅here
答案 1 :(得分:2)
更新到一个旧问题,但它可能对某人有帮助。
使用Intent
传递它。在class1:
Intent i = new Intent(getApplicationContext(), class2.class);
i.putExtra("points",points);
startActivity(i);
在第2课:
Bundle extras = getIntent().getExtras();
float[] points = extras.getFloatArray("points");
请参阅bundles的API,了解可以发送的其他结构
答案 2 :(得分:1)
如果我理解你的问题,有两种(可能更多)方法:
1)将float[]
传递给class2的构造函数。 (鉴于你的代码,这可能不是最好的方法。)
2)在class2中创建方法setMyFloatArray(float[] arr)
,在class1中创建getMyFloatArray()
方法。在程序中实例化class1和class2之后,使用get方法作为参数调用set方法。
答案 3 :(得分:1)
为此,您可以使用随String
传递的Intent
个附加内容。
所以,首先你需要获得float []数组的String
表示:
public class YourArrayUtils {
public static String pack(float[] data) {
StringBuilder sb = new StringBuilder();
final int length = data.length;
for (int i = 0; i < length; i++) {
sb.append(data[i]);
if (i < (length - 1)) {
sb.append(':');
}
}
return sb.toString();
}
public static float[] unpack(String str) {
if (TextUtils.isEmpty(str)) {
return new float[0]; // or null depending on your needs
} else {
String[] srtData = TextUtils.split(str, ":");
final int length = srtData.length;
float[] result = new float[length];
for (int i = 0; i < length; i++) {
result[i] = Float.parseFloat(srtData[i]);
}
return result;
}
}
}
然后将其与Intent
:
Intent i = new Intent(YourActivityA.this, YourActivityB.class);
i.putExtra("floatArray", YourArrayUtils.pack(yourFloatArray));
startActivity(i);
最后在YourActivityB中提取它:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
Intent i = getIntent(); // get starting Intent
float[] yourFloatArray = YourArrayUtils.unpack(i.getStringExtra("floatArray"));
...
答案 4 :(得分:0)
如果要大量使用,您可以在Global Singleton中传递数据。
public class YourApplication extends Application
{
public float[] points = new float[100];
}
然后通过以下方式在任何活动中调用它:
YourApplication appState = ((YourApplication)this.getApplication());
appState.points = new float[100]; // Do whatever you need to with the points here.