简单的Android应用程序来打印文本

时间:2013-05-22 15:29:09

标签: java android

我最近开始观看有关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;
}

}

每当我输入文字或数字时,app力就会关闭。帮助?!

2 个答案:

答案 0 :(得分: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);
}

您正在创建同一变量的两个实例。坏!要在其他方法中使用这些值,您应该从EditText内删除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();
        }
   });

}

此外,请确保XML文件中的<Button>具有@+id/button_id的id属性,以使代码生效。 (感谢ZouZou)

答案 1 :(得分: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的方法并执行它。