如何在一个活动中使用java类?

2023-12-01

如何在一个活动中使用 Java 类,我的意思是将该活动的不同组件分布在一堆 Java 类中。我对 Android 有点陌生,这是我迄今为止尝试过的:

MainActivity.java

package com.example.alex.myapplication;



 import android.support.v7.app.ActionBarActivity;
 import android.os.Bundle;
 import android.view.Menu;
 import android.view.MenuItem;



 public class MainActivity extends ActionBarActivity {

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


}





@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.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();

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

    return super.onOptionsItemSelected(item);
}
  }

一些东西.java

import android.view.View;
import android.widget.EditText;
import android.widget.Button;
import android.app.Activity;




    public class Something  {

  private Activity activity;
  private Button add,subtract,multiply,devide;
  private EditText editA, editB, editC;
  private double doubleA,doubleB,doubleC;





      public Something(Activity a){

              activity=a;
              click();

       }


       public void click(){
           editA = (EditText) activity.findViewById(R.id.editText);
           editB = (EditText) activity.findViewById(R.id.editText2);
           editC = (EditText) activity.findViewById(R.id.editText3);
          doubleA =Double.parseDouble(editA.getText().toString());
          doubleB =Double.parseDouble(editB.getText().toString());


              add = (Button) activity.findViewById(R.id.add);
              subtract = (Button) activity.findViewById(R.id.subtract);
              multiply = (Button) activity.findViewById(R.id.multiply);
              devide = (Button) activity.findViewById(R.id.devide);

               add.setOnClickListener(new View.OnClickListener() {
                   @Override
                   public void onClick(View v) {

                     doubleC = doubleA+doubleB;
                     String s = "" + doubleC;
                      editC.setText(s);


                   }
               });

               subtract.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View v) {

                   doubleC = doubleA-doubleB;
                   String s = "" + doubleC;
                   editC.setText(s);


               }
           });

               multiply.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View v) {

                   doubleC = doubleA*doubleB;
                   String s = "" + doubleC;
                   editC.setText(s);


               }
           });



           devide.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View v) {

                   doubleC = doubleA/doubleB;
                   String s = "" + doubleC;
                   editC.setText(s);


               }
           });



       }



       }

所以我不确定为什么我的侦听器没有在我的按钮上工作,所以我尝试将活动传递给将侦听器添加到按钮的类,但实际上这不起作用,现在我的应用程序甚至无法启动模拟器。我想做的就是让“MainActivity”处理“Gui”并让“Something”类处理侦听器,但无论我做什么,我似乎都无法使它们相互通信以形成一个活动。

LogCat

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference
        at android.app.Activity.findViewById(Activity.java:2071)
        at com.example.alex.myapplication.Something.click(Something.java:32)
        at com.example.alex.myapplication.MainActivity.onCreate(MainActivity.java:19)
        at android.app.Activity.performCreate(Activity.java:5937)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
        at android.app.ActivityThread.performLaunchActivity
(ActivityThread.java:2251)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
        at android.app.ActivityThread.access$800(ActivityThread.java:144)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5221)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at   com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run           (ZygoteInit.java:899)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

就像之前发布的带有 1 个 java 类的 XD 一样,按下按钮后再次调用它,例如,您可以有一个不可见的按钮、单选按钮,无论您想要什么不可见,只需单击一下,它就会变得可见并对您有用,我在这里:

首先控制活动的变量将要执行的操作

String num ="";

然后有你的按钮,我用了其中的两个,其他的是不可见的

Button bn1;
Button bn2;
Button bn3;
Button bn4;
bn3.setVisibility(View.INVISIBLE);
bn4.setVisibility(View.INVISIBLE);

然后按钮代码,取决于您想要多少个按钮

Button.setOnClickListener(new Button onclickListener(){
        public void onClick(){
            //get a default variable in this case String num
    Intent intent = new Intent(MainActivity.this, MainActivity.class); num="cero"; intent.putExtra("po", num);
                        CodigoPeticion=2; startActivityForResult (intent,CodigoPeticion); finish(); break;
                }
            }
        });

这个获取字符串编号:

Bundle extras = getIntent().getExtras();
        if (extras!= null) {
            num =extras.getString("po");
        }

最后但并非最不重要的是,这个根据字符串做一些事情:

    if (num.matches("cero")){
                //do something, enable more buttons, disable radiobuttons,
bn3.setVisibility(View.VISIBLE);
            }else if(num.matches("one")){//this string is from another button
                //do something else in the same activity, as you spected enable radiobuttons, show a image, etc
bn4.setVisibility(View.VISIBLE);
            }else{
                //some textview with a specific title
                TextView.setText("Something's Wrong");
            }

不要忘记 bn3 和 bn4 听众!

希望对您有帮助,再见!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在一个活动中使用java类? 的相关文章

  • 将表值参数与 SQL Server JDBC 结合使用

    任何人都可以提供一些有关如何将表值参数 TVP 与 SQL Server JDBC 一起使用的指导吗 我使用的是微软提供的6 0版本的SQL Server驱动程序 我已经查看了官方文档 https msdn microsoft com en
  • Firebase ANR - 甚至不使用 firebase

    随着 GMS 的最新更新 引入了新的 ANR 如果您退出应用程序 然后返回 则 ANR 就会初始化 线程跟踪似乎指向 Firebase 但我什至从未开始使用 Firebase 我猜它一定是新的 GMS 包的一部分 06 11 00 34 0
  • 导航抽屉默认片段

    我是一名新手开发人员 我正在将导航抽屉与 android support v7 集成到我的应用程序中 我有一个问题 当我启动应用程序时 主要布局是这样的
  • 获取给定类文件的目录路径

    我遇到的代码尝试从类本身的 class 文件所在的同一目录中读取一些配置文件 File configFiles new File this getClass getResource getPath listFiles new Filenam
  • Java 收集返回顶级项目的映射的嵌套流

    我有以下模型 class Item String name List
  • 如何以编程方式启动 ssh 服务器 android,以及如何获取连接到设备的用户名和密码

    我正在开发像这样的应用程序sshdroid 我想在 Android 操作系统上打开 ssh 连接 并且我想从电脑连接应用程序 我使用了 JSCH lib 但是这个lib用于将android连接到pc 我的要求是pc到android 任何人都
  • Android Studio - 值必须 ≥ 0

    我在 Android Studio 中收到与光标有关的错误 我的代码中有以下行 String data cursor getString cursor getColumnIndex columnIndex columnIndex 被传递到该
  • 为什么Android应用程序在发布到市场后尺寸会增加?

    我最近在 Android 市场上发布了我的应用程序 显示应用程序大小为 5 4MB 而实际 apk 大小为 2 8MB 为什么显示多出2MB 我应该如何限制我的应用程序大小 请帮我 您的应用程序大小会增加 因为您使用了复制保护选项ON在发布
  • BottomSheetDialog get Behavour 始终返回 null

    我与底部表单对话框我必须获得行为才能设置setBottomSheetCallback 来处理一些事情 As 谷歌说 https android developers googleblog com 2016 02 android suppor
  • Espresso 和 Proguard 的 Java.lang.NoClassDefFoundError

    我对 Espresso 不太有经验 但我终于成功地运行了它 我有一个应用程序需要通过 Proguard 缩小才能处于 56K 方法之下 该应用程序以 3 秒的动画开始 因此我需要等到该动画结束才能继续 这就是我尝试用该方法做的事情waitF
  • 尝试使用等于“是”或“否”的字符串变量重新启动 do-while 循环

    计算行程距离的非常简单的程序 一周前刚刚开始 我有这个循环用于解决真或假问题 但我希望它适用于简单的 是 或 否 我为此分配的字符串是答案 public class Main public static void main String a
  • 解析输入,除了 System.in.read() 之外不使用任何东西

    我很难找到具体的细节System in read 有效 也许有人可以帮助我 似乎扫描仪会更好 但我不允许使用它 我被分配了一个任务 我应该以 Boolean Operator Boolean 的形式读取控制台用户输入 例如T F 或 T T
  • 哪个集合更适合存储多维数组中的数据?

    我有一个multi dimensional array of string 我愿意将其转换为某种集合类型 以便我可以根据自己的意愿添加 删除和插入元素 在数组中 我无法删除特定位置的元素 我需要这样的集合 我可以在其中删除特定位置的数据 也
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • Hibernate 和可序列化实体

    有谁知道是否有一个框架能够从实体类中剥离 Hibernate 集合以使它们可序列化 我查看了 BeanLib 但它似乎只进行实体的深层复制 而不允许我为实体类中的集合类型指定实现映射 BeanLib 目前不适用于 Hibernate 3 5
  • 安卓的限制

    我需要构建一个应用程序 该应用程序拍摄相机图像并将其上传到网络 在网络上进行一些处理并返回真 假 我在这方面遇到了一些问题 希望得到澄清 1 我的应用程序有什么方法可以知道 Android 相机捕获的图像吗 我从这里明白了什么 Androi
  • Android 自定义警报对话框中的 OnClickListener

    我是一个自学成才的初学者 感谢耐心 谢谢 在 Eclipse 中 我使用自己的 xml 文件 custom dialog 创建了一个自定义警报对话框 称为 usernamealert 如果用户尚未输入用户名 即 username lengt
  • JAXB - 列表<可序列化>?

    我使用 xjc 制作了一些课程 public class MyType XmlElementRefs XmlElementRef name MyInnerType type JAXBElement class required false
  • Android:如何检测手机设置中的语言已更改

    我如何检测我的手机语言是否已更改 例如 Facebook 应用程序将向我们宣布 please wait we preparing your language i used myString Locale getDefault getDisp
  • 当ScrollView滚动到底部时加载更多数据

    我有一个带有动态加载内容的滚动视图 有时可能会有很多内容 所以我想在用户滚动到底部时加载更多内容 我搜索了合适的方法 发现了两种 onScrollChanged and getScrollY 但我不知道如何将它用于我的目的 请给我一些建议

随机推荐

  • 将字符串从 C# 编组到 C++

    我是微软世界的新人 我在尝试将简单的字符串从 c 传递到 dll c 时遇到很多问题 我读过很多帖子和文档 但问题是一样的 C code extern C declspec dllexport int Init long l char ur
  • 宏中的 # 和 ##

    include
  • 如何更改 UITableView Swift 3 中的分隔符高度?

    尽管关于这个主题已经有一些答案 它们都没有涵盖 Swift 3 而且它们都是很久以前的了 当前在 Swift 3 中更改 UITableView 中分隔符高度的最佳方法是什么 更新为 Swift 3 如果您想更改 UITableView 分
  • 如何在链接悬停时隐藏浏览器左下角的 url

    当我将光标悬停在链接上时 我想隐藏显示的网址 我只想在我的浏览器上这样做 网上有很多关于此的问题 但我没有找到任何可行的解决方案 我正在寻找适用于 Chrome 或 Firefox 的解决方案 为什么我需要这样做 我很快就会展示一个网站演示
  • jQuery 如果在页面上找到此图像,请添加此元标记?

    我正在尝试将丰富的片段添加到显示星星的动态图像中 我的购物车写的唯一内容就是这个图像 所以我必须找到正在显示的图像 然后添加正确的元标记 因此 如果显示的图像是 1stars gif 我必须写 如果显示的图像是 5stars gif 我必须
  • 如何按列删除所有具有“NA”值的单元格

    这个问题不是重复的 因为我的data frame 没有相同数量的NA values在所有列中 因此该问题中提到的解决方案不起作用 我有一个data frame与很多NA值 我想删除所有具有 NA 值的单元格 重要 不是行或列 单元格 原来的
  • 如何将 URI 传递给意图?

    我正在尝试将 URI 对象传递给我的 Intent 以便使用该 URI 在另一项活动中 如何传递 URI private Uri imageUri Intent intent new Intent this GoogleActivity c
  • GPS计算Windows Phone 7上两点之间的距离

    我正在使用 GPS 来计算两点之间的距离 即我使用 Windows Phone 作为卷尺 但当我开始时 我实际上没有得到正确的值 即使我站着不动 它也给了我数百米 这是我的代码 myWatcher StatusChanged new Eve
  • 响应多个KeyDown事件

    我正在制作一个简单的 WinForm 赛车游戏 我有两个对象 汽车 当按下按键时它们在表单上移动 Form1KeyDown Event 唯一的问题是 当一个玩家按下一个键时 另一个玩家无法按下他的键 什么也不会发生 但是当第一个玩家释放钥匙
  • 嵌套的 RecyclerView 不滚动

    我在另一个回收器视图中添加回收器视图时遇到问题 子回收器位于 CardView 内 而 CardView 位于父回收器视图内 我尝试了互联网上的所有解决方案 但没有用 我希望子回收器视图垂直滚动 而父回收器视图也垂直滚动 父级回收者视图
  • 在 PL/SQL 过程中,将查询或引用游标包装在 HTML 表中

    如果您使用 SQL Plus 来使用 这似乎很容易 SQL gt set markup html on 并在 SQL Plus 窗口中获得一些可爱的结果 我们有一个预言机工作 需要通宵运行 并向许多人发送结果电子邮件 我想将 sql 语句包
  • 替换模板文件中的 bash 变量

    我正在尝试使用 Bash 来运行某种形式的安装过程 在此过程中 将复制配置文件并替换其中的某些值 这样的配置可以在下面找到 server listen 80 root INSTALLPATH server name SITEURL clie
  • 如何检测用户是否点击了“后退”按钮

    当用户返回history back 1时 我如何检测到这一点 然后 警告 用户点击了返回 使用绑定 最好是 jQuery 您通常不能 浏览器安全限制 您可以判断用户是否离开页面 onbeforeunload onunload 触发 但您无法
  • Selenium RC 中的 XPath 或 CSS 与 Java 不起作用

    我正在尝试使用 selenium RC 自动执行以下场景 打开Goog le主页并在搜索框中输入 软件 然后单击搜索按钮 单击 Google 搜索检索到的多个链接中的第一个链接 由于我看不到这些链接的 name 或 id 属性 并且该链接的
  • 如何在ASP.NET Core 1.0 RC2项目中使用PCL

    我想使用带有目标的简单 POCO 仅无其他依赖项 PCL Xamarin Android 通用Windows 10 ASP NET 核心 1 0 在 ASP NET Core 1 0 RC2 项目中 全部在同一解决方案中 我已将此导入添加到
  • IDisposable.Dispose 在 using 块中发生异常后永远不会被调用

    我从很多来源了解到this and this那Dispose的方法IDisposable如果在 a 中抛出异常 则始终会被调用Using堵塞 那么我有这个代码 static class MainEntryPoint static void
  • 打开lucene索引时出错:Map failed

    我尝试使用 1 2 3 4 GB 内存启动该进程 但仍然出现相同的错误 有小费吗 gc 日志显示它正在运行 GC 即使它有足够的内存 但这个错误可能与使用 NIO 的内存映射文件有关 有人见过这样的事情吗 如果是这样 你是如何解决的 jav
  • 如何修复 Qt 5.6 beta 和 VS2015 的 QT VS Add-in?

    我没有自己编译 Qt 而是使用 Qt 官方网站的安装程序 5 6 beta 几天前就可用了 安装成功 Qt 文件夹包含 bin 文件夹 其中包含 qmake 和所有内容 在 Qt Creator 中构建应用程序是可行的 但是 当我尝试使用
  • 如何在 PyTorch 中使用 2 张图像作为训练样本?

    I just begin learning deep learning and my first homework is to finish an leaves classification system based on convolut
  • 如何在一个活动中使用java类?

    如何在一个活动中使用 Java 类 我的意思是将该活动的不同组件分布在一堆 Java 类中 我对 Android 有点陌生 这是我迄今为止尝试过的 MainActivity java package com example alex mya