1

我最近开始观看有关 android 开发的 youtube 视频。我看了一些并尝试编写自己的应用程序。基本上它的作用是,用户在文本字段中输入文本,当用户按下单击按钮时,输入的值会显示在文本视图上。

我对应该在哪里定义变量以及如何检索值以及如何在特定项目上显示值感到非常困惑。我想知道这些东西,这样我才能正确地开始开发 Android 应用程序。这是我目前拥有的代码:

package com.abihnav.numdisplayer;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {

public String YOUR_NUM = "YOUR_NUM";

EditText numEditText;
TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    EditText numEditText = (EditText) findViewById(R.id.numEditText);
    TextView textView = (TextView) findViewById(R.id.textView1);
}

public void printNum(){
    YOUR_NUM = numEditText.getText().toString();
    textView.setText(YOUR_NUM);


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

每当我输入文本或数字时,应用程序强制关闭。帮助?!

4

2 回答 2

1

通过执行以下操作:

EditText numEditText;
TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    EditText numEditText = (EditText) findViewById(R.id.numEditText);
    TextView textView = (TextView) findViewById(R.id.textView1);
}

您正在创建同一变量的两个实例。坏的!为了在其他方法中使用这些值,您应该从 内部删除EditTextand ,如下所示:TextViewonCreate

EditText numEditText;
TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   numEditText = (EditText) findViewById(R.id.numEditText);
   textView = (TextView) findViewById(R.id.textView1);
}

现在您仍然需要定义您的 Button 及其onClick方法来完成此操作。像这样:

EditText numEditText;
TextView textView;
Button myButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   numEditText = (EditText) findViewById(R.id.numEditText);
   textView = (TextView) findViewById(R.id.textView1);
   myButton = (Button) findViewById(R.id.button_id);
   myButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            printNum();
        }
   });

}

此外,请确保您<Button>的 XML 文件中有一个 id 属性,@+id/button_id以便代码正常工作。(感谢邹邹)

于 2013-05-22T15:35:29.867 回答
1

像@TronicZomB 你也可以尝试这种方式

EditText numEditText;
TextView textView;
Button myButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   numEditText = (EditText) findViewById(R.id.numEditText);
   textView = (TextView) findViewById(R.id.textView1);
   myButton = (Button) findViewById(R.id.button_id);

}
public void printNum(View v)  {
YOUR_NUM = numEditText.getText().toString();
textView.setText(YOUR_NUM);

}

在 XML 部分

<Button
android:id=@id/button_id
android:text="ok"

android:onClick="printNum"

android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>

因此,通过将其直接放入您的 XML 中,它会调用名为 printNum 的方法并执行它。

于 2013-05-22T15:56:24.177 回答