0

在过去的两天里,我一直在绞尽脑汁,试图让按钮起作用。基本上我希望我的按钮调用“添加密码功能”。

如果您想查看我的整个代码,请访问 github.com/servingbaby/UPM-Epassafe。

这是我的 main.xml (按钮成功显示,但是按下它时没有任何反应) main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent">

    <TextView
        android:id="@android:id/empty"
        android:layout_width="fill_parent"
        android:layout_height="2dp"
        android:gravity="center"
        android:text="@string/no_accounts" />

        <Button android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_gravity="center"
        android:text="@string/add_account" android:id="@+id/add" android:minWidth="125dip"></Button>

        <ListView android:id="@android:id/list"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"/>

</LinearLayout>

这是我的 AndroidManifest 精简到我认为我出错的部分。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.epassafe.upm"
          android:versionCode="3"
          android:versionName="1.2">

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="16"/>
    <application android:icon="@drawable/upm" 
       ....>
        <activity android:name=".AppEntryActivity">
        </activity>

        <activity android:name=".FullAccountList">
            <meta-data android:name="android.app.default_searchable"
                       android:value=".SearchResults" />
        </activity>

        <activity android:name=".AddEditAccount">
        </activity>
    </application>
</manifest>

这是我的 MainActivity.Java,我相信我应该调用正确的代码。

public abstract class MainActivity extends Activity implements OnClickListener{`

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final Button countButton = (Button) findViewById(R.id.add);

        countButton.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                Intent intent = new Intent(MainActivity.this,AddEditAccount.class);
                MainActivity.this.startActivity(intent);
            }
        });

    }
}

但是按下按钮并没有像我预期的那样发生。没有错误或强制关闭,所以我现在真的很茫然。谢谢!

**编辑谢谢大家如何尝试帮助我。我已经尝试了许多建议的解决方案,但还没有弄清楚。我已将我的文件上传到 github,并按照评论进行了一些尝试编辑。基本上我只是想弄清楚如何添加一个按钮并让它运行必要的代码来添加一个帐户。(原始代码运行良好,但我想对其进行改进。对不起,我的能力水平仍然很低,但努力学习我最好的:)如果有人能帮助我,我将不胜感激!谢谢你^^

**编辑 2 再次感谢大家的意见和建议。我想出了一个简单的解决方案。我最终使用菜单包装器创建了一个按钮单击事件,结果发现我正在编辑错误的 Java 文档,当时我想尝试将正确的代码添加到另一个似乎几乎在做同样事情的代码中事物。每天学些新东西。

4

4 回答 4

0

首先,您无需实现 OnClickListener 即可在按钮中设置一个监听器。但也许您有其他原因,如果没有,请将其删除。

我认为您声明的 xml 的 id 名称错误,请看一下: Android 中“@id/”和“@+id/”之间的差异 可能是因为 @android:id 而不是 @+ ID。

于 2013-05-27T11:32:29.403 回答
0

使用这种方式调用 Intent

Intent intent = new Intent(MainActivity.this, AddEditAccount.class);
                startActivity(intent);
于 2013-05-27T11:34:40.700 回答
0

查看您的列表视图

<ListView android:id="@android:id/list"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"/>

您已将宽度和高度作为填充父级,因此您的 ListView 位于您的按钮上,因此当您单击按钮时,您实际上并未单击该按钮。当您单击一个按钮时,按钮颜色会改变一秒钟,这在您的情况下不会发生,请自行查看。所以删除列表视图或设置按钮下方的高度,然后检查您的按钮单击是否有效

于 2013-05-27T12:18:01.657 回答
0

我不明白您为什么要对您的活动实施 OnClickListener。implements OnClickListener从您的活动中删除。它应该可以正常工作。

但既然你这样做是出于不知道什么原因,你应该像这样让你的按钮可以点击。

countButton.setOnClickListener(this);

public void onClick(View view)
{
Intent intent = new Intent(MainActivity.this,AddEditAccount.class);
                MainActivity.this.startActivity(intent);
}
于 2013-05-27T14:06:11.077 回答