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

@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 に答える
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);
}

同じ変数の 2 つのインスタンスを作成しています。悪い!これらの値を他のメソッドで使用するには、次のようにEditTextと をTextViewから削除する必要があります。onCreate

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);
}

onClickこれを完了するには、Button とそのメソッドを定義する必要があります。そのようです:

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>に、id 属性を持つ が XML ファイルに含まれていることを確認してください。@+id/button_id(ZouZouさんありがとうございます)

于 2013-05-22T15:35:29.867 に答える