Java 如何从其他类而不是Android中的Activity调用Activity中的方法?
我有两个班在我的项目,第一个扩展活动和其他扩展其他类。请帮助如何从其他类而不是活动调用主活动中的方法?这是我的代码:Java 如何从其他类而不是Android中的Activity调用Activity中的方法?,java,android,class,android-activity,nullpointerexception,Java,Android,Class,Android Activity,Nullpointerexception,我有两个班在我的项目,第一个扩展活动和其他扩展其他类。请帮助如何从其他类而不是活动调用主活动中的方法?这是我的代码: 扩展活动类 public class Isign extends Activity { private static final String TAG = "Sample::Activity"; public Isign() { Log.i(TAG, "Instantiated new " + this.getClass()); } @Overri
public class Isign extends Activity {
private static final String TAG = "Sample::Activity";
public Isign() {
Log.i(TAG, "Instantiated new " + this.getClass());
}
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.i(TAG, "onCreate");
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
a = new IsignView(this);
LinearLayout lv = new LinearLayout(this);
lv.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams textViewParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
tv = new TextView(this);
tv.setTextSize(20);
tv.setText("RESULT : ");
tv.setLayoutParams(textViewParams);
lv.addView(tv);
lv.addView(a);
setContentView(lv);}
public void update_kom(String d){
Log.i("asd", "asd");
tv.setText("");
tv.setText("RESULT : " + d);
}
public class IsignView extends IsignCvViewBase {
public IsignView(Context context) {
super(context);
try {
} catch (IOException e) {
e.printStackTrace();
Log.e(TAG, "Failed to load cascade. Exception thrown: " + e);
}
}
public class Isign extends Activity {
private static final String TAG = "Sample::Activity";
public Isign() {
Log.i(TAG, "Instantiated new " + this.getClass());
}
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.i(TAG, "onCreate");
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
a = new IsignView(this);
LinearLayout lv = new LinearLayout(this);
lv.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams textViewParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
tv = new TextView(this);
tv.setTextSize(20);
tv.setText("RESULT : ");
tv.setLayoutParams(textViewParams);
lv.addView(tv);
lv.addView(a);
setContentView(lv);}
public void update_kom(String d){
Log.i("asd", "asd");
tv.setText("");
tv.setText("RESULT : " + d);
}
public class IsignView extends IsignCvViewBase {
public IsignView(Context context) {
super(context);
try {
} catch (IOException e) {
e.printStackTrace();
Log.e(TAG, "Failed to load cascade. Exception thrown: " + e);
}
}
new Isign().update_kom("bottle");
我得到了这个错误日志:
07-05 06:52:22.290: E/AndroidRuntime(2708): FATAL EXCEPTION: Thread-12
07-05 06:52:22.290: E/AndroidRuntime(2708): java.lang.NullPointerException
07-05 06:52:22.290: E/AndroidRuntime(2708): at
org.baharsan.isign.Isign.update_kom(Isign.java:86)
07-05 06:52:22.290: E/AndroidRuntime(2708): at
org.baharsan.isign.view.IsignView.processFrame(IsignView.java:353)
07-05 06:52:22.290: E/AndroidRuntime(2708): at
org.baharsan.isign.cv.IsignCvViewBase.run(IsignCvViewBase.java:101)
07-05 06:52:22.290: E/AndroidRuntime(2708): at
org.baharsan.isign.view.IsignView.run(IsignView.java:557)
07-05 06:52:22.290: E/AndroidRuntime(2708): at
java.lang.Thread.run(Thread.java:1019)
谢谢你的回答,我很抱歉,如果这个问题重复,而我找不到类似的问题,像我的问题。另一个问题只是告诉我如何从主活动调用其他类中的方法,但这个问题正好相反。“如何从其他类调用主活动中的方法?”
非常感谢:)最简单的方法是将活动的引用传递给其他类,而不是上下文。比如说
public IsignView(Isign activityReference) {
super((Context) activityReference);
activityReference.update_kom("bottle");
try {
} catch (IOException e) {
e.printStackTrace();
Log.e(TAG, "Failed to load cascade. Exception thrown: " + e);
}
}
最简单的方法是将活动的引用传递给其他类而不是上下文。比如说
public IsignView(Isign activityReference) {
super((Context) activityReference);
activityReference.update_kom("bottle");
try {
} catch (IOException e) {
e.printStackTrace();
Log.e(TAG, "Failed to load cascade. Exception thrown: " + e);
}
}
通过在“CallActivity”中写入来调用“WantedActivity”
stringname用于处理WantedActivity。此外,您还可以通过将其写入“CallActivity”中来删除私有的调用“WantedActivity”
stringname用于处理WantedActivity。您还可以删除
private
当RSenApps的答案起作用时,让视图只在某个活动中起作用并不是最好的主意。相反,在视图中声明一个接口。然后让活动实现该接口并通过构造函数或setter将其提供给视图。当您感兴趣的任何事件发生时,视图都可以调用接口实例上的方法
另外,请注意,您永远不能自己对活动调用
new
,活动始终由框架管理。尽管RSenApps的答案有效,但让视图仅在某个活动中起作用并不是最好的主意。相反,在视图中声明一个接口。然后让活动实现该接口并通过构造函数或setter将其提供给视图。当您感兴趣的任何事件发生时,视图都可以调用接口实例上的方法
另外,请注意,您永远不能自己对活动调用new
,活动始终由框架管理