针对使用相同的sqlite进行三个活动这个问题,本篇文章进行了详细的解答,同时本文还将给你拓展Android/Java:从多个活动访问相同的SQLiteDB对象、android–如何从一个活动到另一个
针对使用相同的sqlite进行三个活动这个问题,本篇文章进行了详细的解答,同时本文还将给你拓展Android / Java:从多个活动访问相同的SQLite DB对象、android – 如何从一个活动到另一个活动获得相同的xmpp连接?、android – 对2个不同的SDK版本使用相同的drawable、android – 您可以为不同的按钮使用相同的OnClickListener吗?等相关知识,希望可以帮助到你。
本文目录一览:- 使用相同的sqlite进行三个活动
- Android / Java:从多个活动访问相同的SQLite DB对象
- android – 如何从一个活动到另一个活动获得相同的xmpp连接?
- android – 对2个不同的SDK版本使用相同的drawable
- android – 您可以为不同的按钮使用相同的OnClickListener吗?
使用相同的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对象
我应该通过使其静态来共享此对象吗?例如,在初始化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连接?
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获得相同的连接?
请任何身体帮助我
解决方法
可能解决方案
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
我试图在我的应用程序中添加对新材料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吗?
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吗?的相关信息,可以在本站进行搜索。
本文标签: