Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从按钮或onCreate外部写入TextView_Java_Android_Nullpointerexception - Fatal编程技术网

Java 如何从按钮或onCreate外部写入TextView

Java 如何从按钮或onCreate外部写入TextView,java,android,nullpointerexception,Java,Android,Nullpointerexception,好了,是时候问另一个noobie问题了: 我已经将Activity类顶部的TextView声明为static,我认为它应该是“全局的”。然后在onCreate中,我将该变量附加到TextView。看起来是这样的: public class CheckerActivity extends Activity { String testNumber = "0"; public static TextView displayArray; @Override protected void onCrea

好了,是时候问另一个noobie问题了:

我已经将Activity类顶部的TextView声明为static,我认为它应该是“全局的”。然后在onCreate中,我将该变量附加到TextView。看起来是这样的:

public class CheckerActivity extends Activity {

String testNumber = "0";
public static TextView displayArray;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_checker);

    int[] numbersArray;
    Intent intent = getIntent();
    numbersArray = intent.getIntArrayExtra(EnterCurrentNumbersActivity.CURRENT_NUMBERS_ARRAY);
    String arrayStringed = Arrays.toString(numbersArray);
    displayArray = (TextView) findViewById(R.id.currentNumbers);
    displayArray.setText(arrayStringed);
}
然后在我自己在同一个类中创建的一个方法中,我尝试使用TextView声明并向其写入一些内容。像这样:

public void addNumber(String[] numbersToAdd) {

    this.setContentView(R.layout.activity_checker);

    displayArray.setText(Arrays.toString(numbersToAdd));
}
然后我有一个按钮调用addNumber方法,如下所示:

public void populateButton(View view) {

        String[] temp = {"test", "array"};
        CheckerActivity addNumbers = new CheckerActivity();
        addNumbers.addNumber(temp);
}
但是当点击按钮时,我在addNumber方法上不断得到NullPointerException

我到处都在搜索这个,但我想我只是不知道该问谷歌什么。据我所知,这应该行得通,我哪里做错了

听你的建议。(但是艾尔达·门苏托夫得到了。现在可以工作了!)

07-09 15:49:48.542 21036-21036/au.com.acent.ash.basiclottochecker W/System.err﹕ java.lang.NullPointerException
07-09 15:49:48.542 21036-21036/au.com.acent.ash.basiclottochecker W/System.err﹕ 位于au.com.acent.ash.basiclotochecker.CheckerActivity.addNumber(CheckerActivity.java:85)
07-09 15:49:48.542 21036-21036/au.com.acent.ash.basiclottochecker W/System.err﹕ 位于au.com.acent.ash.basiclotochecker.CheckerActivity.populateButton(CheckerActivity.java:37)
07-09 15:49:48.542 21036-21036/au.com.acent.ash.basiclottochecker W/System.err﹕ 位于java.lang.reflect.Method.Invokenactive(本机方法)
07-09 15:49:48.552 21036-21036/au.com.acent.ash.basiclottochecker W/System.err﹕ 位于java.lang.reflect.Method.invoke(Method.java:525)
07-09 15:49:48.552 21036-21036/au.com.acent.ash.basiclottochecker W/System.err﹕ 在android.view.view$1.onClick上(view.java:3809)
07-09 15:49:48.552 21036-21036/au.com.acent.ash.basiclottochecker W/System.err﹕ 在android.view.view.performClick上(view.java:4421)
07-09 15:49:48.552 21036-21036/au.com.acent.ash.basiclottochecker W/System.err﹕ 在android.view.view$PerformClick.run(view.java:17903)
07-09 15:49:48.552 21036-21036/au.com.acent.ash.basiclottochecker W/System.err﹕ 位于android.os.Handler.handleCallback(Handler.java:730)
07-09 15:49:48.552 21036-21036/au.com.acent.ash.basiclottochecker W/System.err﹕ 位于android.os.Handler.dispatchMessage(Handler.java:92)
07-09 15:49:48.552 21036-21036/au.com.acent.ash.basiclottochecker W/System.err﹕ 位于android.os.Looper.loop(Looper.java:213)
07-09 15:49:48.552 21036-21036/au.com.acent.ash.basiclottochecker W/System.err﹕ 位于android.app.ActivityThread.main(ActivityThread.java:5225)
07-09 15:49:48.552 21036-21036/au.com.acent.ash.basiclottochecker W/System.err﹕ 位于java.lang.reflect.Method.Invokenactive(本机方法)
07-09 15:49:48.552 21036-21036/au.com.acent.ash.basiclottochecker W/System.err﹕ 位于java.lang.reflect.Method.invoke(Method.java:525)
07-09 15:49:48.552 21036-21036/au.com.acent.ash.basiclottochecker W/System.err﹕ 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:741)
07-09 15:49:48.552 21036-21036/au.com.acent.ash.basiclottochecker W/System.err﹕ 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
07-09 15:49:48.552 21036-21036/au.com.acent.ash.basiclottochecker W/System.err﹕ 在dalvik.system.NativeStart.main(本机方法)

为了回答这个问题,我现在想打电话给你
public void addNumber(字符串[]numbersToAdd)
来自完全不同的类(同一项目中完全不同的文件) 使用
此.addNumber(temp)不起作用。
有什么建议吗???

不要打电话

this.setContentView(R.layout.activity_checker);
在您的
公共void addNumber(字符串[]numbersToAdd)

重放

   CheckerActivity addNumbers = new CheckerActivity();
   addNumbers.addNumber(temp);


并使您的字段不是静态的:
public TextView displayArray

首先不要在addNumber方法中重新设置“this.setContentView(R.layout.activity\u checker)”,然后发布日志。我认为您错过了findViewById()按钮。您不需要
this.setContentView(R.layout.activity\u checker)并从textview中删除静态。为什么这些方法是公共的??你从外面接近他们吗?如果是,那么不要这样做<代码>CheckerActivity addNumbers=新的CheckerActivity()您不能这样做。确定,删除
此.setContentView(R.layout.activity\u checker)和文本视图中的静态。logcat是:谢谢你,Eldar。它是this.addNumber(temp);成功了!关于我是否想从一个完全不同的类调用addNumbers,有什么建议吗?在哪种类中,你想调用方法“addNumbers(..)?如果这是另一个活动,你不能这样做。若它不是活动类的子类,那个么可以将活动的引用放在“完全不同的类”的构造函数中。无论如何,试试看,如果出了什么问题,问一个新问题。我是从一个公共类调用它的,
扩展活动
新活动-新布局。一个文本视图不能属于两个或多个活动
   this.addNumber(temp);