GVKun编程网logo

使用相同的sqlite进行三个活动

11

针对使用相同的sqlite进行三个活动这个问题,本篇文章进行了详细的解答,同时本文还将给你拓展Android/Java:从多个活动访问相同的SQLiteDB对象、android–如何从一个活动到另一个

针对使用相同的sqlite进行三个活动这个问题,本篇文章进行了详细的解答,同时本文还将给你拓展Android / Java:从多个活动访问相同的SQLite DB对象、android – 如何从一个活动到另一个活动获得相同的xmpp连接?、android – 对2个不同的SDK版本使用相同的drawable、android – 您可以为不同的按钮使用相同的OnClickListener吗?等相关知识,希望可以帮助到你。

本文目录一览:

使用相同的sqlite进行三个活动

使用相同的sqlite进行三个活动

我正在使用同时打开的三个活动。所有活动都是来自sqlite的追溯数据。从活动a-> b或从b->
c进入时,我不会关闭或重新打开连接。我只是在活动销毁时处理我的数据库。

活动A

SqliteConnection db;

OnCreate method
db = new SqliteConnection(mypath);

OnDestroy
db.Dispose();
db=null;

Onbuttonclick
startActivity(new Intent(this,ActivityB));

当我从活动b-> c开始时,正在运行相同的代码。在同一活动中,我经常使用sqlite。

这是一个好习惯吗?使用后我应该立即处置连接吗?还是应该在暂停时关闭连接并在恢复时重新打开?还是可以将相同的打开的连接传递给下一个活动?哪种方法最好?

问题已修改

class databaseHelper
{
      private static SqliteConnection db;

      public static SqliteConnection openDatabase(Context context)
   {
         if(db==null)
             db = new SqliteConnection(mypath);

           return db;

   }

}

在我创建活动中

  databaseHelper.openDatabase(this).myquery....

Android / Java:从多个活动访问相同的SQLite DB对象

Android / Java:从多个活动访问相同的SQLite DB对象

我的应用程序中有一个中央数据库,需要访问一些不同的活动.

我应该通过使其静态来共享此对象吗?例如,在初始化DB的活动中,我这样做:

protected static appDatabase db;

其他人可以通过FirstActivity.db访问它.

另一种选择是在每个需要它的活动中创建私有appDatabase数据库对象,但我怀疑打开多个数据库对象来访问相同的存储数据可能是浪费.

但是我不太了解java这就是我要问的原因 – 这是什么首选方式,为什么?

谢谢

解决方法

你可以像这样使用单身人士;
private static DataHelper singleton;

    public static DataHelper getDataHelper(Context context) {
            if (singleton == null) {
                    singleton = new DataHelper(context);
                    OpenHelper openHelper = new OpenHelper(singleton.context);
                    singleton.db = openHelper.getWritableDatabase();
            }
            if(!singleton.db.isopen()){
                    OpenHelper openHelper = new OpenHelper(singleton.context);
                    singleton.db = openHelper.getWritableDatabase();
            }
            singleton.context = context;
            return singleton;
    }

    private DataHelper(Context context) {
        this.context = context;
}

并像这样打电话给你的单身人士课;

public DataHelper dh;
this.dh = DataHelper.getDataHelper(this);

android – 如何从一个活动到另一个活动获得相同的xmpp连接?

android – 如何从一个活动到另一个活动获得相同的xmpp连接?

我是新的programmer.i想使用xmpp服务器实现示例应用程序来获取聊天.在这个实现中,我已经使用ConnectionConfiguration对象创建了连接,如下所示:
ConnectionConfiguration connConfig =new ConnectionConfiguration(host,Integer.parseInt(sport),service);

我将connConfig对象传递给XMPPConnection类,通过调用connect方法我正在获取连接,并通过调用login方法传递用户名pand密码然后我登录到password.to登录我正在使用一个按钮.当我点击按钮我正在使用意图改变活动.一个我正在改变活动,我想在另一个活动中获得相同的连接.

我已经编写了LoginActivity的代码,如下所示:

public class LoginActivity extends Activity
 {

ConnectionConfiguration connConfig ;

 XMPPConnection connection;



  @Override
 protected void onCreate(Bundle savedInstanceState) 
  {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.setting);


    ((Button)findViewById(R.id.login)).setonClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) 
           {

             connConfig =new ConnectionConfiguration(host,service);

          connection = new XMPPConnection(connConfig);

            connection.connect();
            connection.login(uname,password);

        }
});

 }
}

我写了ChatPageActivity如下:

public class ChatPage extends Activity {

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.chatpage);

    //How to get the same XMPPConnection from LoginActivity here    

     }
  }

如何从LoginActivity到ChatPageActivity获得相同的连接?

请任何身体帮助我

解决方法

使用单例模式( http://en.wikipedia.org/wiki/Singleton_pattern)创建一个新类(在一个新的.java文件中),您可以从应用程序的任何一个位置保持当前的活动连接.

可能解决方案

public class XMPPLogic {

  private XMPPConnection connection = null;

  private static XMPPLogic instance = null;

  public synchronized static XMPPLogic getInstance() {
    if(instance==null){
      instance = new XMPPLogic();
    }
    return instance;
  }

  public void setConnection(XMPPConnection connection){
    this.connection = connection;
  }

  public XMPPConnection getConnection() {
    return this.connection;
  }

}

然后,在您的LoginActivity上设置连接:

XMPPLogic.getInstance().setConnection(connection);

在ChatPage中,您可以得到它:

XMPPLogic.getInstance().getConnection().doStuff()

android – 对2个不同的SDK版本使用相同的drawable

android – 对2个不同的SDK版本使用相同的drawable

我试图在我的应用程序中添加对新材料UI的支持,但我遇到了令人讨厌的情况.

在SDK 14之前,黑色app菜单需要白色图标.从SDK 14开始,Holo灯主题需要黑色图标.现在,当迁移到Material时,我再次需要白色图标.所以基本上我有一个文件夹drawable-hdpi-v11,一个drawable-hdpi-v14和一个drawable-hdpi-v21. drawable-hdpi-v11和drawable-hdpi-v21具有相同的图像,当然Lint警告我,我有相同的资源重复.

我已经研究了别名Creating alias resources,但它似乎没有提供我需要的功能.你知道如何获得相同的结果(SDK< 14或SDK> = 21的白色图像,SDK> = 14和SDK< 21的黑色图像),而不重复资源?

解决方法:

您希望@ drawable / ic_action_heart解析为:

>白色< 14
> on on> = 14且< 21
>白色> = 21

在这种情况下:

>在res / drawable-hdpi-v14 /中有一个黑暗版本的图标ic_action_heart.png
>在res / drawable-hdpi /中将图标的简易版本设为ic_action_heart_white.png
>在res / drawable-hdpi-v21 /中有一个名为ic_action_heart.xml的可绘制别名,指向@ drawable / ic_action_heart_white
>在res / drawable-hdpi /中有一个名为ic_action_heart.xml的可绘制别名,指向@ drawable / ic_action_heart_white

当然,您将在其他密度桶中具有相同的基本结构(例如,-xxhdpi).由于密度比API级别更重要,我认为您需要具有密度特定版本的别名.

android – 您可以为不同的按钮使用相同的OnClickListener吗?

android – 您可以为不同的按钮使用相同的OnClickListener吗?

在 android中,可以使用相同的OnClickListener来进行不同的按钮吗?如果是,如何获取点击生成的按钮?我目前有4个按钮,每个按钮都有自己的OnClickListener.每个OnClickListener都做同样的事情,除了获取点击的按钮的文本.我想创建一个单一的OnClickListener,但是我不知道如何确定哪个按钮被点击了.谢谢
protected void onCreate(Bundle savedInstanceState) {
        // Todo Auto-generated method stub
        super.onCreate(savedInstanceState);

        mTts = new TextToSpeech(this,new TextToSpeech.OnInitListener() {

            @Override
            public void onInit(int arg0) {
                // Todo Auto-generated method stub

            }
        });
        setContentView(R.layout.home);
        Button button1 = (Button)findViewById(R.id.button1);
        Button button2 = (Button)findViewById(R.id.button2);
        Button button3 = (Button)findViewById(R.id.button3);
        Button button4 = (Button)findViewById(R.id.button4);

        //Load First Word
        button1.setonClickListener(button1ClickListener);
        button2.setonClickListener(button2ClickListener);
        button3.setonClickListener(button3ClickListener);
        button4.setonClickListener(button4ClickListener);

    }

侦听器的代码与粗体不同的部分

private OnClickListener button1ClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View arg0) {
        **Button button = (Button)findViewById(R.id.button1);**
        handleButtonClick(button);
    }
};

private OnClickListener button2ClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View arg0) {
        **Button button = (Button)findViewById(R.id.button2);**
        handleButtonClick(button);

    }
};

private OnClickListener button3ClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View arg0) {
        **Button button = (Button)findViewById(R.id.button3);**
        handleButtonClick(button);

    }
};

private OnClickListener button4ClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View arg0) {
        **Button button = (Button)findViewById(R.id.button4);**
        handleButtonClick(button);

    }
};

handleButtonclick的代码

private void handleButtonClick(Button button) {
        if(button.getText().equals(currentWord)){
            currentscore += availablescore;
            TextView score = (TextView)findViewById(R.id.textViewscore);
            score.setText(String.valueOf(score));
            currentIndex++;
            availablescore = 4;
            InitializeGame();
        }
        else{
            availablescore--;
            button.setEnabled(false);
        }
    }

根据Karthik的建议,我将我的代码修改为以下内容:

protected void onCreate(Bundle savedInstanceState) {
        // Todo Auto-generated method stub
        super.onCreate(savedInstanceState);

        mTts = new TextToSpeech(this,new TextToSpeech.OnInitListener() {

            @Override
            public void onInit(int arg0) {
                // Todo Auto-generated method stub

            }
        });
        setContentView(R.layout.home);
        Button button1 = (Button)findViewById(R.id.button1);
        Button button2 = (Button)findViewById(R.id.button2);
        Button button3 = (Button)findViewById(R.id.button3);
        Button button4 = (Button)findViewById(R.id.button4);

        //Load First Word
        button1.setonClickListener(buttonClickListener);
        button2.setonClickListener(buttonClickListener);
        button3.setonClickListener(buttonClickListener);
        button4.setonClickListener(buttonClickListener);

    }

OnClickListenerCode

private OnClickListener buttonClickListener = new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            handleButtonClick((Button)arg0);
        }
    };

解决方法

是的,这是可能的.我下面写了一个例子,应该比较简单.

像往常一样,为所有按钮添加OnClickListener,如下所示:

btn1.setonClickListener(this);
btn2.setonClickListener(this);
btn3.setonClickListener(this);

然后添加onClick()事件,如下所示:

@Override
public void onClick(View v) {
    // Todo Auto-generated method stub
    if(v == btn1){
        //Things to do  
    }
    if(v == btn2){
        //Things to do      
    }
    if(v == btn3){
        //Things to do  
    } 
}

这应该是正常的.不要忘记为您的onCreate所在的类隐含View.OnClickListener,否则所有设置OnClickListener的语句将不正确.

我们今天的关于使用相同的sqlite进行三个活动的分享就到这里,谢谢您的阅读,如果想了解更多关于Android / Java:从多个活动访问相同的SQLite DB对象、android – 如何从一个活动到另一个活动获得相同的xmpp连接?、android – 对2个不同的SDK版本使用相同的drawable、android – 您可以为不同的按钮使用相同的OnClickListener吗?的相关信息,可以在本站进行搜索。

本文标签: