人员详细信息应用

PlanetAstro_William

我对Android(7个月)进行编程非常陌生,并且在创建应用程序时遇到了问题。我想做的是为自己的Android学习创建一个“人员详细信息”测试应用,方法是在主活动上带有EditText并在其旁边放置TextViews(首先显示默认值),然后打开另一个名为EditData的活动(带有一个按钮),显示用户输入EditText的值(通过Parcelable),返回到主活动(通过另一个按钮),并在EditText旁边的TextViews中显示这些输入的值(在“更新信息”上) “按钮),而不是默认按钮。除了显示更改的值外,我设法使所有功能正常运行。一切都检查完了,LogCat中没有错误,但是当用户/我单击更新按钮时,显示的是默认值。有人能帮我吗?这是我的主要活动代码:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
    final Person firstPerson = new Person();
    TextView displayName, displayAge, displayHeight, displayWeight;
    EditText editName, editAge, editHeight, editWeight;
    Button editActivity, update;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);
    instantiateUi();
    editActivity.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            firstPerson.setPersonName(editName.getText().toString());
            firstPerson.setPersonAge(Integer.parseInt(editAge.getText().toString()));
            firstPerson.setPersonHeight(Integer.parseInt(editHeight.getText().toString()));
            firstPerson.setPersonWeight(Integer.parseInt(editWeight.getText().toString()));
            Intent editIntent = new Intent(MainActivity.this, EditData.class);
            editIntent.putExtra("First_Person_Data", firstPerson);
            MainActivity.this.startActivity(editIntent);
        }
    });
    update.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            displayName.setText(firstPerson.getPersonName());
            displayAge.setText(String.valueOf(firstPerson.getPersonAge()));
            // String.valueOf is needed to set int for TextViews
            displayHeight.setText(String.valueOf(firstPerson.getPersonHeight()));
            displayWeight.setText(String.valueOf(firstPerson.getPersonWeight()));
        }
    });
}

private void instantiateUi() {
    editName = (EditText)findViewById(R.id.edit_name);
    editAge = (EditText)findViewById(R.id.edit_age);
    editHeight = (EditText)findViewById(R.id.edit_height);
    editWeight = (EditText)findViewById(R.id.edit_weight);
    displayName = (TextView)findViewById(R.id.display_name);
    displayAge = (TextView)findViewById(R.id.display_age);
    displayHeight = (TextView)findViewById(R.id.display_height);
    displayWeight = (TextView)findViewById(R.id.display_weight);
    editActivity = (Button)findViewById(R.id.edit_activity);
    update = (Button)findViewById(R.id.update_info);

}


@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, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_settings:
            break;
        default:
            return super.onOptionsItemSelected(item);
    }
    return true;
}
}    

我的EditData活动代码:

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class EditData extends ActionBarActivity {
    TextView changedName, changedAge, changedHeight, changedWeight;
    Button MainActivity;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.edit_activity);
    Person incomingObject = getIntent().getParcelableExtra("First_Person_Data");
    instantiateUi();
    changedName.setText(incomingObject.getPersonName());
    changedAge.setText(String.valueOf(incomingObject.getPersonAge()));
    changedHeight.setText(String.valueOf(incomingObject.getPersonHeight()));
    changedWeight.setText(String.valueOf(incomingObject.getPersonWeight()));
    MainActivity.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent EditActivity = new Intent(EditData.this, MainActivity.class);
            EditData.this.startActivity(EditActivity);
        }
    });
}

private void instantiateUi() {
    changedName = (TextView)findViewById(R.id.changed_name);
    changedAge = (TextView)findViewById(R.id.changed_age);
    changedHeight = (TextView)findViewById(R.id.changed_height);
    changedWeight = (TextView)findViewById(R.id.changed_weight);
    MainActivity = (Button)findViewById(R.id.main_activity);
}


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

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
}    

我的Parcelable类用于传输数据值:

import android.os.Parcel;
import android.os.Parcelable;

public class Person implements Parcelable{
    String personName;
    int personAge, personHeight, personWeight;

public Person(){
    personName = "No Name!";
    personAge = 0;
    personHeight = 0;
    personWeight = 0;
}

public Person(String pName, int pAge, int pHeight, int pWeight) {
    personName = pName;
    personAge = pAge;
    personHeight = pHeight;
    personWeight = pWeight;
}

public Person(Parcel in) {
    personName = in.readString();
    personAge = in.readInt();
    personHeight = in.readInt();
    personWeight = in.readInt();
}

public String getPersonName() {
    return personName;
}

public void setPersonName(String personName) {
    this.personName = personName;
}

public int getPersonAge() {
    return personAge;
}

public void setPersonAge(int personAge) {
    this.personAge = personAge;
}

public int getPersonHeight() {
    return personHeight;
}

public void setPersonHeight(int personHeight) {
    this.personHeight = personHeight;
}

public int getPersonWeight() {
    return personWeight;
}

public void setPersonWeight(int personWeight) {
    this.personWeight = personWeight;
}

@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeString(personName);
    dest.writeInt(personAge);
    dest.writeInt(personHeight);
    dest.writeInt(personWeight);
}

public static final Parcelable.Creator<Person> CREATOR =
        new Parcelable.Creator<Person>() {
            @Override
            public Person createFromParcel(Parcel in) {
                return new Person(in);
            }

            @Override
            public Person[] newArray(int size) {
                return new Person[size];
            }
        };
}    

抱歉,如果有问题,这是我的第一个问题,非常感谢您可以为菜鸟C0D3R提供什么帮助:P

詹斯·詹森

您不应该以大写字母开头变量名称。您的按钮MainActivity非常混乱。最好用类似的名称命名btMainActivity

它认为您的问题是,您MainActivity像开始时所做的那样忘记为您的产品添加额外的费用EditData

editActivity.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            firstPerson.setPersonName(editName.getText().toString());
            firstPerson.setPersonAge(Integer.parseInt(editAge.getText().toString()));
            firstPerson.setPersonHeight(Integer.parseInt(editHeight.getText().toString()));
            firstPerson.setPersonWeight(Integer.parseInt(editWeight.getText().toString()));
            Intent editIntent = new Intent(MainActivity.this, EditData.class);
            editIntent.putExtra("First_Person_Data", firstPerson);
            MainActivity.this.startActivity(editIntent);
        }
    });

MainActivity.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent EditActivity = new Intent(EditData.this, MainActivity.class);
            // put your extra here 
            EditData.this.startActivity(EditActivity);
        }
    });

对于您想要的内容,您也可以使用startActivityForResult看看吧!您还应该签出AndroidAnnotations它可以为您节省大量代码和时间。我无法想象如果没有它就制作一个Android应用程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

除了Apple开发人员帐户外,如何获取我的应用程序下载详细信息

来自分类Dev

获取错误详细信息,例如“ openerp应用程序错误详细信息”

来自分类Dev

esxi详细信息

来自分类Dev

Powershell在全球范围内应用详细信息

来自分类Dev

Kendo网格详细信息模板无法正确应用

来自分类Dev

Google应用内结算:无法查询订阅详细信息

来自分类Dev

保存应用程序的购买详细信息

来自分类Dev

如何记录应用程序运行的详细信息?

来自分类Dev

哪个应用程序显示磁盘详细信息?

来自分类Dev

不带模型的拆分应用程序的详细信息页面

来自分类Dev

获取应用播放音频的详细信息

来自分类Dev

在新的Google登录Play服务8.3中获取人员详细信息

来自分类Dev

Linkedin Api如何通过人员搜索获取群组详细信息

来自分类Dev

如何在以任何字符分隔的单列中显示人员的详细信息

来自分类Dev

在 Django 应用程序中显示特定用户详细信息而不是所有详细信息

来自分类Dev

LDA VolumeViz详细信息

来自分类Dev

角度,项目详细信息

来自分类Dev

获取意图详细信息

来自分类Dev

Hibernate:GenericGenerator详细信息

来自分类Dev

Cassandra节点详细信息

来自分类Dev

抛出异常的详细信息

来自分类Dev

Oracle异常详细信息

来自分类Dev

角度,项目详细信息

来自分类Dev

记录语法详细信息

来自分类Dev

显示位置详细信息

来自分类Dev

javascript setTimeout详细信息

来自分类Dev

远程wifi详细信息

来自分类Dev

了解xrandr的详细信息

来自分类Dev

conntrack条目详细信息