我对Android很陌生,但我有一些经验(并且有点生疏)Java和OOP。
基本上我的应用程序所做的是当你按下按钮时,led或“图像”会闪烁。
我正在尝试将我的项目划分为多个文件,我可以导入一个java文件来使用该类的函数,但我不确定如何做到这一点......
我有两个文件。 1)HelloFormStuff.java(这与主要的一样),以及2)led_functions.java
在HelloFormStuff中我放了:
import com.example.helloformstuff.led_functions
// com.example.helloformstuff is the package
代码示例.. HelloFormStuff.java
public class HelloFormStuff extends Activity {
/* Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button btn1 = (Button) findViewById(R.id.btn1);
btn1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// Perform action on clicks
currentMode.setText("Button 1 Pressed");
led_circleBusy();
}
});
}
}
在led_functions.java ......
public class led_functions extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ImageView LED_1;
LED_1 = (ImageView)findViewById(R.id.LED_1);
@Override
public void led_circleBusy()
{
LED_1.setVisibility(View.INVISIBLE);
}
}
我得到的错误是:方法led_circleBusy()未定义类型new View.OnClickListener(){}
所以我问的是如何从其他文件中实现我的其他功能。
感谢。
-Paul
PS:我一直在看示例代码,如果你想知道为什么我把它放在不需要它的“@Override”之类的地方,那就忽略它..我一直在尝试随意的东西:l答案 0 :(得分:2)
好吧,看起来你不得不回去学习:
Android应用生命周期
在Java中,您无法像在onCreate()中使用led_circleBusy()那样在另一个方法中定义方法。您的led_functions类无法按原样编译。
然后,您必须声明您的led_circleBusy()以便使用led_functions.led_circleBusy()从任何地方调用它,或者在调用led_circleBusy()之前创建一个新的led_functions实例(new led_functions())。 / p>
Android应用程序中的活动可以被视为“屏幕”。 2活动只能通过Intents进行通信。对一个活动中的视图的操作只能通过将活动A中的意图传递给活动B来修改第二个活动上的视图。
如果你的组件在同一个屏幕上,那么你不应该有2个子类的Activity,而只有一个和一个实用程序类,你可以从Activity中传递参数。
你应该仔细阅读http://developer.android.com/guide/topics/fundamentals/activities.html#Lifecycle
然后再读一遍。
你应该在android开发指南中仔细阅读的第二件事是Intents: http://developer.android.com/guide/topics/intents/intents-filters.html
这些概念对任何有Java经验的开发人员来说都是新的。因此,您必须花费必要的时间来详细了解它们,以便能够创建最基本的Android应用程序。
答案 1 :(得分:1)
您可以从HelloFormStuff
课程中执行以下操作。
led_functions led = new led_functions();
led.led_circleBusy();
然后从@Override
方法上方删除led_circleBusy()
。你不应该真的在调用其他Activity的方法。 led_functions
真的是一个Activity / UI类吗?如果没有,请移除extends Activity
,将LED_1
添加到HelloFormStuff
,然后将其作为参数传递给led.led_circleBusy(ImageView led1)
。
答案 2 :(得分:1)
只要所有类(特定于Android或其他类)占用相同的包/命名空间,例如com.mycompany.mypackage,就不需要导入...
对于助手......
package com.mycompany.mypackage
public class MyHelper {
public void doSomething() {
...
}
}
对于活动......
package com.mycompany.mypackage
public class MyActivity extends Activity {
private MyHelper helper = new MyHelper();
@Override
protected void onCreate(...) {
...
helper.doSomething();
}
答案 3 :(得分:0)
HelloFormStuff类没有led_circleBusy()实现,因此无法调用此方法
答案 4 :(得分:0)
你有两种方式。
将led_circleBusy()
声明为静态,然后您可以将其称为led_functions.led_circleBusy()
将其保持为非静态,并在<{1}}的实例上调用它,如
led_functions
这是严格讲Java的。如果它们实际上是两个不同的led_functions lf = new led_functions();
lf.led_circleBusy();
s(不同的“窗口”),但是一个人调用另一个,那么你应该看看Activity
s。