繁体   English   中英

java - 如何在java中不相关的类之间传递非静态变量?

[英]How do I pass non-static variables between unrelated classes in java?

我目前正在开发一个有 2 页的 android 应用程序,第一页有一个滑块,我尝试将其输入/值转移到第 2 页上的画布失败。相关代码的一般框架如下:

public class MainActivity extends AppCompatActivity {
    int sliderVariable = 1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //... SliderVariable updated using slider's ontouchListener//
    }
}

此代码工作正常,滑块变量设置正确,我的主要困难是找到一种方法将这些变量传输到第二页上的 MyCanvas 类。 这是画布的设置方式:

public class MyCanvas extends View{
//how do i get the sliderVariable in here?
    public MyCanvas(Context context, AttributeSet attributeSet){
        super(context,attributeSet);
   }
}

看起来应该很简单,但我不知道如何在彼此之间传递这些变量。

我曾尝试使用 get 和 set 方法,这些都没有用。

我想也许我可以使用 sharedpreference 会话存储,但由于这两个类不相关,我无法让它们“同步”(我对 java 比较陌生,所以忽略奇怪的术语)。 我觉得这个选项很有可能奏效,但事实并非如此。 我相信一个类需要扩展另一个类? 我不知道。

我尝试的最后一件事是使用 Intent 将变量发送到 MyCanvas,但这不起作用。 第二页实际上称为Sheetpage,而MyCanvas 是我在Sheetpage 布局中使用的视图,因此意图指向SheetPage。 我也尝试过让 MyCanvas 成为意图的“接收者”,但我收到一条错误消息,说MyCanvas must extend android.app.Activity 考虑到 MyCanvas 已经扩展了视图,我不能让它也扩展活动。

还有其他方法可以转移我缺少的这些变量吗? 在完整的应用程序中,我有 3 个滑块,它们最终只需要传输 3 个两位数的数字,所以如果有其他方式通常因速度慢或资源密集而被不赞成,这不是问题。 感谢您的阅读,希望您能给我一些关于这个问题的见解。

我认为您正在寻找意图的概念。

Intent 是在视图之间传递信息的对象。

在第一个视图上,您​​在创建第二个视图之前创建一个意图对象。 有很多意图选项,您可以传递多种类型的信息。 这是来自https://www.javatpoint.com/android-intent-tutorial的示例

Intent intent=new Intent(Intent.ACTION_VIEW, Uri.parse(url));  
startActivity(intent);

另一方面,在创建新活动的地方,您会收到此意图并阅读它。 以下是如何从 Android 上的意图中获取额外数据的示例?

String subName = getIntent().getStringExtra("subjectName");
int insId = getIntent().getIntExtra("instituteId", 0);

希望你觉得它有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM