【问题标题】:Trying to call an activity with a button onClick尝试使用按钮 onClick 调用活动
【发布时间】:2013-05-27 11:02:05
【问题描述】:

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

如果您想查看我的整个代码,请访问 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 文档,当时我想尝试将正确的代码添加到另一个似乎几乎在做同样事情的代码中事物。每天学习新东西。

【问题讨论】:

  • 尝试,Intent 意图 = new Intent(getApplicationContext(),AddEditAccount.class);
  • 我可以看看 AddEditAccount 吗?
  • 在 android 清单中我找不到活动 MainActivity 的声明,这可能是原因。请检查一下。
  • 您是否尝试在您的 onClick 中添加一个 Log.d() 以确保它甚至会被解雇?

标签: java android button android-activity


【解决方案1】:

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

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

countButton.setOnClickListener(this);

public void onClick(View view)
{
Intent intent = new Intent(MainActivity.this,AddEditAccount.class);
                MainActivity.this.startActivity(intent);
}

【讨论】:

  • 感谢您的提问。基本上我正在关注如何调用活动的教程。如果这不是最好的方法,我真的很想学习正确的实现。谢谢。
  • @StevenBennett 两者都是正确的方法,但你应该使用什么取决于要求。您应该遵循我在 Stackoverflow 上找到的这个答案。它确实以最简单的方式解释了这件事。干得好。 stackoverflow.com/a/8866429/2414595
【解决方案2】:

首先你不需要实现 OnClickListener 来在你的按钮中设置一个监听器。但也许您有其他原因,如果没有,请删除它。

我认为您声明的 xml id 的名称是错误的,请看一下: Difference between "@id/" and "@+id/" in Android 可能是因为@android:id 而不是@+id。

【讨论】:

  • 感谢您的观察。我一直在遵循代码其他部分的示例来提出这个问题。我不确定正确的实施方式。
【解决方案3】:

用这种方式调用Intent

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

【讨论】:

  • 感谢您的建议。我尝试了这段代码,但是没有发生任何变化。我认为这部分是正确的,但是在其他地方我遗漏了一些东西。
【解决方案4】:

查看您的列表视图

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

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

【讨论】:

  • 感谢您对更改这些变量的建议。我试图更改它们,以便按钮是 xml 上唯一的东西。然而,仍然按下按钮不提供执行。所以我相信在其他地方我错过了一些东西。真的很想知道我在哪里犯了错误。
猜你喜欢
  • 2019-03-03
  • 1970-01-01
  • 1970-01-01
  • 2018-10-02
  • 1970-01-01
  • 2017-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多