
您如何在一个活动中使用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 {@OverrIDeprotected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); new Something(this);}@OverrIDepublic 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;}@OverrIDepublic 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);} }Something.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”类处理侦听器,但是不管我做什么,我似乎都无法使他们相互交流以形成一个Activity.
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.access0(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类的post 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; } } });这个得到String num:
Bundle extras = getIntent().getExtras(); if (extras!= null) { num =extras.getString("po"); }最后但并非最不重要的一点是,此 *** 作取决于String:
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, etcbn4.setVisibility(VIEw.VISIBLE); }else{ //some textvIEw with a specific Title TextVIEw.setText("Something's Wrong"); }不要忘记bn3和bn4监听器!
希望对您有所帮助,再见!
总结以上是内存溢出为你收集整理的如何在一个活动中使用Java类?全部内容,希望文章能够帮你解决如何在一个活动中使用Java类?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)