为什么我的Android应用程序更改只显示我第一次运行它?

时间:2014-11-11 16:01:06

标签: android android-activity android-emulator

我正在开发一个相当简单的应用程序。它有3个活动,每个活动都有一张图片作为背景,不同的TextView在图像上显示不同的字符串。我的环境:Mac OSX Yosemite,Eclipse Juno版本23.

这是我的问题。我将进行更改,例如将文本从“123456789”更改为“012345678”,然后运行该应用程序。 Logcat和控制台显示没有错误,并表示已安装该应用程序。我在模拟器或设备上打开应用程序,它显示了我第一次运行应用程序时所做的更改。如果我进行任何其他更改,则不会被提取。我尝试删除并重新创建我的模拟器,但它不起作用。我已经尝试将其设置为擦除以前的数据,但这也不起作用。 Eclipse只能识别我的三星Galaxy S3 ONCE。然后,当我尝试在手机上再次运行它时,它不会作为设备出现。如果我完全重新启动计算机,它将再次运行,但只能运行一次。它让我疯了,我花了2天时间试图解决它。我没有在网上找到任何我没有尝试过的信息。就好像重新启动计算机会擦除一些数据以便它再次起作用,但在哪里?

这是我的主要活动。

package com.autotec.nfcdemo;

public class MainActivity extends ActionBarActivity {
private NfcAdapter nfcAdapter;
private ListView listView;
private IsoDepAdapter isoDepAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

}
@Override
public void onResume() {
    super.onResume();
        null);
}
@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;
}

@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();
    // if (id == R.id.action_settings) {
    // return true;
    // }
    // return super.onOptionsItemSelected(item);

    switch (item.getItemId()) {
    case R.id.action_joe:
        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
        return true;
    case R.id.action_jane:
        intent = new Intent(this, Jane.class);
        startActivity(intent);
        return true;
    case R.id.action_john:
        intent = new Intent(this, John.class);
        startActivity(intent);
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }

}

}

这是MainActivity XML文件。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:adjustViewBounds="true"
android:background="@drawable/card"
android:gravity="center_horizontal"
android:orientation="vertical" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="85dp"
    android:layout_marginTop="250dp"
    android:textColor="#000000"
    android:textSize="18sp"
    android:textStyle="bold"
    android:typeface="serif"
    android:text="123456789" />

</LinearLayout>

这是我的AndroidManifest。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.autotec.nfcdemo"
android:versionCode="1"
android:versionName="1.0" >

<uses-permission android:name="android.permission.NFC" />

<uses-feature android:name="android.hardware.nfc.hce" />

<uses-sdk
    android:minSdkVersion="19"
    android:targetSdkVersion="21" />

<application
    android:allowBackup="true"
    android:icon="@drawable/aa_launcher_icon_high"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >


    <activity android:name=".MainActivity" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".Jane"
        android:label="@string/title_activity_jane" >
    </activity>

    <activity
        android:name=".John"
        android:label="@string/title_activity_john" >
    </activity>
</application>

</manifest>

2 个答案:

答案 0 :(得分:1)

要检查的一件事是你的控制台日志...有时它会说出以下内容:警告:活动未启动,其当前任务已被带到前面&#34;如果发生这种情况,您的新更改不一定会被加载......这通常是由未完成的对话框或Toast等引起的。 避免这种情况的方法是在加载新版本之前在模拟器上手动关闭应用程序。

如果这不能解决您的问题,请务必在构建和加载之前清理项目。 ( in eclipse,project-&gt; clean ...)

祝你好运!

答案 1 :(得分:1)

你能告诉我们&#34;其中&#34;你做了那个改变吗?!据我所知,TextView具有值&#34; 123456789&#34;那就是每次打开应用程序时它会显示的那个。

你可以在onCreate上创建:

TextView yourTextView = (TextView) findViewById(R.id.textView1)

yourTextView.setText("012345678");

这将改变&#34; 123456789&#34;到&#34; 012345678&#34;每次打开应用程序。

你可以简单地改变android:text =&#34; 123456789&#34;到&#34; 012345678&#34;如果你不需要第一个值。

保持新价值的其他方法是使用&#34; SharedPreferences&#34;并将该数据(键值)保存在应用程序的内部存储中,并在以后或每次打开应用程序时获取。