Android利用单例模式更改控件的属性,无法实现的问题

这是MainActivity中的代码,主要是加粗部分的代码,本打算通过Button的Onclick方法,来调用单例里边的Txtchange方法,来改变TextView的text,但是就是不法实现,求大神指点

package com.example.controlproject0311;

import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.os.Build;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // setContentView(R.layout.activity_main);
    RelativeLayout mainLayout = new RelativeLayout(this);
    mainLayout.setId(11);
    setContentView(mainLayout);
    Button button = new Button(this);
    button.setId(20);
    button.setText("hello");
    button.setTextSize(40);
    button.setTranslationX(50);
    button.setTranslationY(60);
    mainLayout.addView(button);

    final TextView txtView = new TextView(this);
    txtView.setText("one");
    txtView.setId(12);
    mainLayout.addView(txtView);

    button.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // SingletonControl.getInstance().txtChange();
            Singleton2.getInstance().sayhello();
            ****Singleton2.getInstance().SetText(txtView.getId());
        }
    });

}

@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);
}

}


这是单例的代码

package com.example.controlproject0311;

import android.app.Activity;
import android.widget.TextView;

public class Singleton2 extends Activity {
/* 持有私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载 */
private static Singleton2 instance = null;

/* 私有构造方法,防止被实例化 */
private Singleton2() {
}

/* 1:懒汉式,静态工程方法,创建实例 */
public static Singleton2 getInstance() {
    if (instance == null) {
        instance = new Singleton2();
    }
    return instance;
}

public void sayhello() {
    System.out.println("are you ok");
}

public void SetText(int id) {
    TextView textView = (TextView) findViewById(id);
    textView.setText("weew");
}

}


0

2个回答

没发现Txtchange方法

0
MyShining
MyShining 东风哥,我的错,是setText()方法
3 年多之前 回复

首先不得不吐槽一下这样的写法,有点难以接受;
其次我猜测问题应该出在Singlton2的SetText方法中,注意此方法中的findViewById的引用者是Singlton2类型,
mainActivity中创建的TextView是在mainLayout上,而mainActivity setContentView(mainLayout),所以
要找到你想要的TextView,传进去的应该是MainActivity的实例。
可以这么写:
public void SetText(Activity activity ,int id) {
TextView textView = (TextView) activity.findViewById(id);
textView.setText("weew");
}
或是
public void SetText(View rootView ,int id) {
TextView textView = (TextView) rootView.findViewById(id);
textView.setText("weew");
}

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Android 在线程中改变控件的属性
转载地址:http://blog.sina.com.cn/s/blog_58b5cfcc0100khf3.html
有关单例模式赋值失败的问题
今天在使用单例模式赋值时,出现了赋值失败的问题:User user=new Gson().fromJson(u, User.class); Test.getInstance().user=user;第二句得到为nullTest.classpublic class Test { private static Test test=new Test(); public User user...
Android 在Java文件中给一个控件动态设置一些属性
在Java文件中给一个控件动态设置属性<RelativeLayout android:layout_width="match_parent" android:layout_height="50dp" android:background="@color/white"> <TextView android:id="@+id/txt_hour" ...
JAVA单例模式(用于表示 线程池、数据库连接池、打印池等系统唯一性资源)
什么是单例类?   1、单例类只能有一个实例。   2、单例类必须自己创建自己的唯一实例。   3、单例类必须给所有其他对象提供这一实例。 单例类的应用场景?   单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打
单例模式下全局变量出现的问题
springmvc+hibernate+jdbctemplate+mysql 先看下面小段代码,一个controller,一个service。       controller.Java代码:     ……..     @Autowired      private XXXService xxxService;     ……..     @RequestMapping(“/doXXX.do”)
Java 利用枚举实现单例模式
引言单例模式比较常见的实现方法有懒汉模式,DCL模式公有静态成员等,从Java 1.5版本起,单元素枚举实现单例模式成为最佳的方法。Java枚举基本用法枚举的用法比较多,本文主要旨在介绍利用枚举实现单例模式的原理,所以这里也主要介绍一些相关的基础内容。 首先,枚举类似类,一个枚举可以拥有成员变量,成员方法,构造方法。先来看枚举最基本的用法:enum Type{ A,B,C,D; }创建en
关于单例的属性问题
才学iOS,现在遇到单例的理解问题,单例中的属性可以修改吗?根据定义似乎不应该啊。但是我通过如下测试,构造函数是不会再次加载,但是属性name是可以被修改的,单例是不是就是这样的?谢谢 import Foundation class Person: NSObject {          var name: String?     var age: Int?     var phone: St
使用Spinner控件的常见问题
http://www.educity.cn/wenda/92137.html1、进入程序就自动执行Spinner的OnItemSelectedListener的问题解决办法: 添加一句话mySpinner.setSelection(0, true);  这句话的作用是预设一个一开始的选择默认值。如果不设置的话,将会自动执行OnItemSelectedListener()http://bbs.csd
最安全的单例模式--java使用内部类实现单例模式
实现类 public class Singleton {     private static class LazyHolder {            private static final Singleton INSTANCE = new Singleton();          }          private Singleton (){}          publi
Android 在代码中设置控件属性
其实控件在代码中也能设置他的属性:  /**      * 在代码中设置控件属性      */     private void initView() {         //在代码中设置         layout=(LinearLayout) findViewById(R.id.linear);         layout.addView(creatrView("张三"))
单例模式之使用enum枚举数据类型实现
枚举enum和静态代码块的特性想死,在使用枚举类时,构造方法会被自动调用, 也可以应用这个特性实现单例模式。 package test; public class MyObject { private enum MyEnumSingleton{ INSTANCE; private Resource resource; private My
设计模式之单例模式--扩展篇(多例模式)
单例模式的使用场景: 1,创建一个对象需要消耗的资源较多,例如,访问IO,访问数据库等资源 2,一个应用中需要共享一个对象数据 3,需要生成唯一序列号; 如何编写一个单例模式呢,步骤如下: 1,将该类的构造器私有化,添加private修饰,这样外部类就无法访问构造函数,无法通过new创建该类实例;private Person(){}; 2,提供一个公有静态的方法,并返回该类的实例对象;结构
Android 自定义控件xml设置属性
android view 自定义标签,可以在xml中配置属性
Android与WebView交互
Android与WebView交互,通过Android控制WebView上控件,更改WebView属性
Android开发中单例模式写法与可能遇到的坑
年底了,手上的活不是很多,就想着将平时记录的笔记总结一下。准备总结一下平时常常使用的设计模式。本篇就是比较常用的单例(Singleton)模式。   不管是Android开发还是Java开发,相信单例模式都是用的比较多的,平时再用的时候有没有想过,到底有多少种写法,或者有么有什么坑没有踩呢?带着这些问题我们先来了解一下什么情况下会用到单例模式。   一般在希望系统中特定类只存在一个实例时,就可以
Android代码中设置控件属性
Android代码中设置控件属性在项目的开发过程中时常会需要在java代码中设置控件的宽高,位置,显示与隐藏等属性。我们可以理解为在布局文件中可以设置的属性,都可以在java代码中来完成,甚至我们可以不需要布局文件而完成所有页面及功能的编写。而在java代码中创建控件有以下优点: 1、页面渲染速度比在布局文件中控件加载速度快 2、可动态修改控件的属性,这点在布局文件中无法做到 3、可根据设备分
使用单例模式读取properties文件
\u96F6=0 \u58F9=1 \u8D30=2 \u53C1=3 \u8086=4 \u4F0D=5 \u9646=6 \u67D2=7 \u634C=8 \u7396=9 \u4E00=1 \u4E8C=2 \u4E09=3 \u56DB=4 \u4E94=5 \u516D=6 \u4E03=7 \u516B=8 \u4E5D=9 \u2460=1 \u2461=2 \u2462=3 \u
Java中枚举实现单例模式
public enum Singleton { INSTANCE; private SingletonClass instance; Singleton() { this.instance = new SingletonClass(); System.out.println("枚举类构造函数"); } public Si...
Activity单例模式与onNewIntent
在Android应用程序开发的时候,从一个Activity启动另一个Activity并传递一些数据到新的Activity上非常简单,但是当您需要让后台运行的Activity回到前台并传递一些数据可能就会存在一点点小问题。 首先,在默认情况下,当您通过Intent启到一个Activity的时候,就算已经存在一个相同的正在运行的Activity,系统都会创建一个新的Activity实例并显示出来
Java中的10个单例模式访问问题
Singleton设计模式是您将在Java应用程序中看到的最常见的模式之一,并且它也在核心Java库中大量使用。来自Singleton模式的问题在Java访谈中非常常见,并且对如何实现Singleton模式有着很好的了解。这也是我最喜欢的设计模式面试问题之一,并且有很多有趣的后续细节,这不仅仅是检查设计模式的知识,而且还检查编码,多线程方面这是非常重要的,而为实际应用工作。在这篇文章中,列出了Ja...
java 双重检查单例和静态内部类单例
最近在看imageLoader 源码的时候,看到单例采用的双重检查机制,但是在看其他大牛写的代码的时候,采用的是静态的内部类作为单例,在此研究下。下面是单例的相关内容: 懒汉式 //懒汉式单例类.在第一次调用的时候实例化自己 public class Singleton { private Singleton() {} private static Singleton
Switch控件详解
Switch控件详解原生效果5.x4.x布局<Switch android:id="@+id/setting_switch" android:layout_width="wrap_content" android:layout_height="wrap_content" />属性 Attribute Name Related Method Description
Android的单例模式的N种实现方式
说起Androidd的23种设计模式,恐怕大多数人不能说全,但是说起单例模式,大多数人不管是初级开发还是资深开发工程师都应该知道并且使用过。单例模式应该是最简单也是比较常用的设计模式了。但是你真的了解单例模式吗?最近看了《Android源码设计模式》这本书,才发现我原来理解的单例模式太冰山一角了。今天就书中谈到的单例模式做一下总结吧。 单例模式的定义及使用场景 定义:确保某个类只有一个实例,而
利用单例模式,解决toast重复弹出的问题
新建类ToastUtils如下: /** * ToastUtils 利用单例模式,解决重命名toast重复弹出的问题 */ public class ToastUtils { private static ToastUtils mToastUtils; private static Toast mToast; private ToastUtils(C
Android设计模式 单例模式(使用容器实现单例模式)
这是一种另类的实现方式,代码如下: package demo;import java.util.HashMap; import java.util.Map;public class Singleton { private static Map<String, Object> objMap = new HashMap<String, Object>(); private Singleto
【设计模式】单例模式的绝对单例及线程安全
一、饿汉模式/** * 饿汉模式 * @author 郑海鹏 * @since 2015年7月6日 */ public class Singleton { private static Singleton instance = new Singleton(); private Singleton() { } public static Singleton getI
使用静态内部类实现延迟加载单例模式
所谓单例模式,简单来说,就是在整个应用中保证只有一个类的实例存在。就像是Java Web中的application,也就是提供了一个全局变量。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类就称为单例类。 单例的创建一般分为懒汉式,恶汉式,双重锁检查,枚举等,其中双重锁检查只能在jdk1.5以后才能有效,1.5以前在java对象模型中的无序写问题不能保证。
单例模式(页面间传值)
单例模式(页面间传值)   单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。 1.单例模式的要点: 显然单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。 2.单例模式的优点: 1.实例控制:Singleton会阻止其他对象实例
Android 单例模式几种实现方式及简析
一.定义: 确保某一个类只有一个实例,而且自行实例并向整个系统提供这个实例 二.使用场景: 避免产生过多的对象消耗过多的资源,或者某种类型的对象只应该有且只有一个。例如,创建一个对象需要消耗的资源过多,如访问数据库或者IO 资源。 三.实现单例模式的关键点: 1.私有化构造方法 2.通过静态方法或枚举返回单例类对象 3.确保单例类的对象有且只有一个,尤其在多线程下 4.确保单例对象
当单例模式遇到多线程并发的时候
对于单例模式,大家都不会感到陌生,特别是对于经常搞开发的再熟悉不过了。 但是,当你写一个单例的时候,你是否考虑到多线程并发的时候,会出现什么问题??? 单例模式无非都是私有化的访问: /*  * GZYY    2016-12-5  上午9:17:44  * author: zsz  */ public class Singleton {     private sta
对C#的控件的Width等属性进行修改无效的解决
如果对控件的Width属性进行修改,但是修改没有生效,那么可以去看看这个控件的AutoSizeMode,将AutoSizeMode设置为GrowOnly或者其他,即可。
MFC 的ActiveX控件开发(属性页)
属性页 属性页使 ActiveX 控件用户得以查看和更改 ActiveX 控件属性。可通过调用控件属性对话框访问这些属性。该对话框包含一个或多个属性页,这些属性页提供自定义的图形界面用于查看和编辑控件属性。 使用默认属性页 创建ActiveX控件项目后,系统就自动为我们添加了一个属性页类,这里就是Cactivexdemo1PropPage。同时在对话框资源里也会有一个属性页对话框资源,这里就
设计模式:这是最全面 & 详细的 单例模式(Singleton)分析指南
前言 今天我来全面总结一下Android开发中最常用的设计模式 - 单例模式。 关于设计模式的介绍,可以看下我之前写的:1分钟全面了解“设计模式” 目录 1. 实例引入 背景:小成有一个塑料生产厂,但里面只有一个仓库。 目的:想用代码来实现仓库的管理 现有做法: 建立仓库类和工人类 其中,仓库类里的quantity=商品数量;工人类里有搬运方法Mov...
Android中用代码设置控件属性的注意事项
效果图 项目结构 MainActivity中 package com.example.zhh.controlattribute; import android.app.Activity; import android.graphics.Color; import android.support.v7.app.AppCompatActivity; import andro
Java设计模式之单例模式及在Android中的重要使用
之前在开发中老用到一些设计模式可是呢又不是很懂,于是狠下心来琢磨一番。下面是我琢磨后总结的,希望对您有用。如果发现了问题,请帮忙指正。一、单例模式是什么?  单例模式最初的定义出现于《设计模式》:“保证一个类仅有一个实例,并提供一个访问它的全局访问点。”   Java中单例模式定义;“一个类有且仅有一个实例,并且自行实例化向整个系统提供该实例。”二、为什么用单例模式?  对于系统中的某些类来说,只
OC成员变量-单例模式
// //  main.m //  单例模式 // //  Created by Goddog on 15/1/2. //  Copyright (c) 2015年 Goddog. All rights reserved. // /*  1.一个类始终只能创建一个实例,则这个类被称之为单例类  2.单例类可以通过static全局变量
设计模式--单例模式【Singleton Pattern】
这个模式是很有意思,而且比较简单,但是我还是要说因为它使用的是如此的广泛,如此的有人缘,单例就是单一、独苗的意思,那什么是独一份呢?你的思维是独一份,除此之外还有什么不能山寨的呢?我们举个比较难复制的对象:皇帝 中国的历史上很少出现两个皇帝并存的时期,是有,但不多,那我们就认为皇帝是个单例模式,在这个场景中,有皇帝,有大臣,大臣是天天要上朝参见皇帝的,今天参拜的皇帝应该和昨天、前天的一样(过渡期的不
单例模式的Java泛型实现方式
单例模式是一个常用的设计模式,主要保证了在内存中永远仅存在一份实例空间。编写高复用性代码的过程中,泛型是难免的。以前已知为每个单独的类进行单例模式实现,而且代码大致都相同,我就在思考是否可以适用泛型将单利模式实现,然后继承泛型类的子类就自动拥有了单例模式。查了一些资料,找了了我最喜欢的实现方式,再次记录以备以后用得上!
android:layout_weight 设置控件的权重 ,子控件所占比例(公式如下)
android:layout_weight 设置控件的权重 ,子控件所占比例(公式如下)
单例模式之继承碰见的问题
<?php // 单例模式之继承 class Singleton { protected static $ins = null; private final function __construct() { } protected final function __clone() { } // public static function getIns() { // if(se

相似问题

11
Android addview自定义控件不显示问题
1
iOS中有遍历父视图的子视图的方法便于统一设置同类控件的属性,Android中有类似的方法吗?
1
msgbox函数上面控件的属性怎么才能访问?能不能像form那样修改上面的控件?
1
msgbox上控件的属性可以单独的设置么?可以对控件的属性进行修改么?
1
msgbox里面的空间是在哪里定义的?怎么用代码实现按钮控件的属性显示?
1
Android studio的一些控件问题
2
android适配器ViewHolder中子控件修改属性必须定义成final类型
1
怎么通过数组的判断得到对应传参的控件的属性?
4
android 已知控件的id名 怎么得到其id值
2
Android自定义ViewGroup的子控件在ViewGroup外无法点击
1
在vb60.编程平台上怎么实现对相同类型的不同控件的属性进行自动匹配
1
vb6.0中文语言平台怎么实现多个相同类型的控件,每个控件的端口属性实现自动分配
1
窗体界面的formload循环能不能写成根据控件作为变量的循环实现一次调用所有控件的控件属性?
1
请问怎么在vb6.0编程开发平台上实现循环语句对窗体上多个控件的属性的调用?
1
求教了,在vb6.0开发语言中怎么实现函数的循环写给控件的属性的调用的写法怎么写?
1
请教下怎么实现用vb6.0编程开发的语言的for循环语句判断和调用每个控件的属性?
1
vb6.0里面实现的程序代码,怎么编写循环语句对于是否控件调用属性的判断?
1
请问怎么利用vb6.0编程的语言的for循环功能语句实现对控件属性的判断和赋值调用?
1
如何利用vb6.0编程软件的循环语法功能实现循环语句对控件是否调用属性的判断?
1
求问运用vb6.0编程开发语言怎么实现循环对控件编写的属性调用的判断?