在Android上为前46个Fibonacci数字创建文本视图

在Android上为前46个Fibonacci数字创建文本视图,android,textview,fibonacci,Android,Textview,Fibonacci,到目前为止,我有这个,结果是一个空白屏幕。为了达到列出前46个斐波那契数的预期效果,我应该做些什么 TextView fibNum; static int i = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public stat

到目前为止,我有这个,结果是一个空白屏幕。为了达到列出前46个斐波那契数的预期效果,我应该做些什么

TextView fibNum;
static int i = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}
    public static int fib(int n) {
                int prev1=0, prev2=1;
                for( i=0; i<n; i++) {
                    int savePrev1 = prev1;
                    prev1 = prev2;
                    prev2 = savePrev1 + prev2;
                }
                return prev1;
    }
    public void main(String[] args) {
        for (int i=0; i<=46; i++)

        fibNum = new TextView(this);
        fibNum.setText(String.valueOf(fib(i)+", "));
    }
}
TextView-fibNum;
静态int i=0;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
公共静态整数fib(整数n){
int prev1=0,prev2=1;

对于(i=0;i首先,仅仅创建一个
TextView
并不能使其成为显示的视图层次结构的一部分。其次,Android永远不会调用你的
main
方法。第三,我甚至看不到你的代码是如何编译的;
main
中的循环只包含对
fibNum
的赋值,因此在调用
setText
时>,变量
i
甚至不在范围内

抛开所有这些不谈,假设您的
activity\u main.xml
布局文件中已经有一个
TextView
,其中id
@+id/text
用于显示数字。我建议这样做:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    TextView text = (TextView) findViewById(R.id.text);
    text.setText(getFib(46));
}

public static int fib(int n) {
    int prev1 = 0, prev2 = 1;
    for(int i = 0; i < n; i++) {
        int savePrev1 = prev1;
        prev1 = prev2;
        prev2 = savePrev1 + prev2;
    }
    return prev1;
}

public static String getFib(int n) {
    StringBuilder sb = new StringBuilder(fib(0));
    for (int i = 1; i < n; ++i) {
        sb.append(", ");
        sb.append(fib(i));
    }
    return sb.toString();
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView text=(TextView)findViewById(R.id.text);
text.setText(getFib(46));
}
公共静态整数fib(整数n){
int prev1=0,prev2=1;
对于(int i=0;i

这假设计算46个斐波那契数不会花费过多的时间。如果需要,则必须将计算转移到工作线程(使用.

您没有调用“main”方法。编程Android应用程序与您可能知道的普通java不同。main方法一开始不会被调用。此外,您没有将TextView添加到布局中2,Android没有使用main()函数启动,您可以将main()的代码在onCreate.Second的末尾,您需要将您创建的文本视图添加到布局中,以便显示。@GrisHu-我已经回滚了您的编辑。这些语句的原始顺序是正确的,因为
sb
已经包含
fib(0)的文本
输入循环之前。您的编辑将导致前两个数字在没有分隔符的情况下连接在一起,并且还会在序列的末尾放置一个额外的分隔符。