我创建了一个应用程序,其中在我的 MainActivity
上显示了一个 Processing Sketch:
package app.yeah.app;
import android.app.Fragment;
import android.app.FragmentManager;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Window;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity {
TextView t1 = (TextView)findViewById(R.id.t1);
//
Fragment fragment;
FragmentManager fragmentManager;
//
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
fragmentManager = getFragmentManager();
fragment = new ProcMenu();
fragmentManager.beginTransaction()
.replace(R.id.frag, fragment).commit();
}
}
通过使用 fragment ,我展示了我的 Processing 草图:
package app.yeah.app;
import android.media.MediaPlayer;
import processing.core.PApplet;
import processing.core.PVector;
public class ProcMenu extends PApplet
{
PVector cur;
float r;
public void setup()
{
//size(240, 400);
smooth();
r = width / 20;
}
public void draw()
{
background(0);
cur = new PVector(mouseX, mouseY);
fill(255, 0, 200, 200);
noStroke();
ellipse(cur.x, cur.y, r, r);
fill(255, 200, 0);
text("X: " + cur.x + ", Y: " + cur.y, r, r);
}
}
草图很容易显示坐标,这很好,但是,我希望能够在我的 MainActivity
中访问这些变量,然后在我的 textView
t1 上显示它。但是在变量没有更新的情况下,我不知道该怎么做。
textView
在布局上:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<FrameLayout android:id="@+id/frag"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</FrameLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/t1"
android:layout_gravity="center_horizontal" />
</LinearLayout>
</RelativeLayout>
非常感谢。
最佳答案
您需要将变量从 ProcMenu
类传递到 MainActivity
类。有两种方法可以做到这一点:
方法 1:在您的 ProcMenu
类中创建一个返回坐标的 get 函数,并在任何时候从 MainActivity
类中调用该函数你想更新。
public class MainActivity extends ActionBarActivity {
TextView t1 = (TextView)findViewById(R.id.t1);
ProcMenu fragment;
public void updateText(){
t1.setText(fragment.getCur().x + ", " + framgent.getCur().y);
}
}
public class ProcMenu extends PApplet{
PVector cur;
public PVector getCur(){
return cur;
}
}
方法 2:在您的 MainActivity
类中创建一个集合函数,然后将您的 MainActivity
实例传递到您的 ProcMenu
类。然后,只要您想更新,只需调用 setter 即可。
public class MainActivity extends ActionBarActivity {
TextView t1 = (TextView)findViewById(R.id.t1);
ProcMenu fragment = new ProcMenu(this);
public void updateText(PVecotr cur){
t1.setText(cur.x + ", " + cur.y);
}
}
public class ProcMenu extends PApplet{
PVector cur;
MainActivity mainActivity;
public ProcMenu(MainActivity mainActivity){
this.mainActivity = mainActivity;
}
public PVector updateCur(){
mainActivity.updateText(cur);
}
}
采用哪种方法完全取决于您。
关于android - 如何改善Android Studio类与Processing sketch的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35038000/