android - 如何改善Android Studio类与Processing sketch的交互

标签 android xml android-studio processing

我创建了一个应用程序,其中在我的 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/

相关文章:

PHP 代码在单次提交时运行多次

android - 将 LinearLayout 转换为 ConstraintLayout 问题

java - 连续暂停/停止和启动/恢复Java TimerTask?

xml - 如何使用 Powershell 添加/删除对 csproj 的引用?

java - 为什么我会获得额外的文本节点作为根节点的子节点?

c# - UNITY 3D C# XML 合并

android-studio - AndroidStudio 3.1.2 突然将导入显示为未解析

android - 未执行 Activity 转换 (Lollipop)

android - 重量不限制布局的宽度

Android Studio 菜单 : Element group is not closed