還是Firebase
SQLite將PostgreSQL作為參考平台。
開始改java檔
從宣告變數開始~ 原來程式碼也要改位置
package com.huang.myfirebase01;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
public class MainActivity extends AppCompatActivity {
// 宣告變數
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("data");
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化
}
public void onClick(View view) {
}
}
package com.huang.myfirebase01;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
public class MainActivity extends AppCompatActivity {
// 宣告變數
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("data");
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化
editText = findViewById(R.id.editText);
//確認是否可以連線-第1次測試
myRef.setValue("Test!");
}
public void onClick(View view) {
}
}
第5步讀資料-全部複製近來
目前的程式碼:
package com.huang.myfirebase01;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
public class MainActivity extends AppCompatActivity {
// 宣告變數
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("data");
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化
editText = findViewById(R.id.editText);
//確認是否可以連線-第1次測試
myRef.setValue("Test!");
// Read from the database
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// This method is called once with the initial value and again
// whenever data at this location is updated.
String value = dataSnapshot.getValue(String.class);
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
}
});
}
public void onClick(View view) {
}
}
先放入Toast來測試看看
package com.huang.myfirebase01;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
public class MainActivity extends AppCompatActivity {
// 宣告變數
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("data");
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化
editText = findViewById(R.id.editText);
//確認是否可以連線-第1次測試
myRef.setValue("Test!");
// Read from the database
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// This method is called once with the initial value and again
// whenever data at this location is updated.
String value = dataSnapshot.getValue(String.class);
Toast.makeText(MainActivity.this,value,Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
Toast.makeText(MainActivity.this,"FAIL",Toast.LENGTH_SHORT).show();
}
});
}
public void onClick(View view) {
}
}
到目前的程式碼:
package com.huang.myfirebase01;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import java.util.HashMap;
public class MainActivity extends AppCompatActivity {
//宣告變數
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("data");
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText);
}
public void onClick(View view) {
switch(view.getId()){
case R.id.button://新增1
String str = editText.getText().toString().trim();
myRef.child("BB").setValue(str);
//myRef.setValue(str);
break;
case R.id.button2://刪除
myRef = database.getReference("data");
//myRef.removeValue();//移除參考點的所有值
myRef.child("BB").removeValue();//移除子節點BB的所有值
break;
case R.id.button3://更新
myRef = database.getReference("data");
HashMap<String, Object> hm = new HashMap<>();
hm.put("KK", "1111111");
myRef.updateChildren(hm);
break;
}
}
}
來RUN看看~也是要用手機測試
在手機看-
新增子節點的方法-
目前長這樣-
https://console.firebase.google.com/project/mygjun-f9bb9/database/mygjun-f9bb9-default-rtdb/data
來測試這句
case R.id.button2://刪除
myRef = database.getReference("data");
//myRef.removeValue();//移除參考點的所有值
myRef.child("BB").removeValue();//移除子節點BB的所有值
break;
來測試這句
case R.id.button3://更新
myRef = database.getReference("data");
HashMap<String, Object> hm = new HashMap<>();
hm.put("KK", "1111111");
myRef.updateChildren(hm);
break;
按更新只有 hm.put("KK", "1111111");
再貼一次程式碼:
package com.huang.myfirebase01;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import java.util.HashMap;
public class MainActivity extends AppCompatActivity {
//宣告變數
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("data");
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText);
}
public void onClick(View view) {
switch(view.getId()){
case R.id.button://新增1
String str = editText.getText().toString().trim();
myRef.child("BB").setValue(str);
//myRef.setValue(str);
break;
case R.id.button2://刪除
myRef = database.getReference("data");
//myRef.removeValue();//移除參考點的所有值
myRef.child("BB").removeValue();//移除子節點BB的所有值
break;
case R.id.button3://更新
myRef = database.getReference("data");
HashMap<String, Object> hm = new HashMap<>();
hm.put("KK", "1111111");
myRef.updateChildren(hm);
break;
}
}
}
最近都在看C#來說說Android和Microsoft Visuall Studio軟體操作(C#)很雷的地方:
在Android的按鈕或放框框要填字的地方四邊中一定要有一邊要有綁定
2.在Microsoft Visuall Studio軟體操作(C#)會有按"按鈕2下"去啟動"Click事件"但是新手不知道總是會很手癢得去按兩次,就變成"Click事件"很多次,然後就做不出來了~還好Android沒有這個問題
3.在C#裡面若要使用關鍵字前面加上@,在Android裡面也是有,不過是真的當"關鍵字使用"..在JAVA的世界裡尤其是網頁常用的"springboot"使用的超嚴重的
4.C#在宣告一個常數時會用const來宣告語法像是一年有12個月就是private const int months=12;但是在Android裡面沒有
5.C#在命名變數的部分int score;是代表把score命名為整數.然後score=90代表的是score的值.目前的寫法都是int score=90比較快
而在Android則是命名按鈕RadioGroup sex;
CheckBox c1,c2,c3;
TextView show;
6.然後我覺得x++和x--還有--x和++x也是很大的"迷"
這個一定要來個範例的阿~不然怎麼會懂0.0
EX1.
int x=20
int y;
y=x--;
//結果y=20 ; x=19 因為y=i再做x--
EX2.
int x=20
int y;
y=--x;
//結果y=19 ; x=19 因為先做x--再做y=x
EX3.
int x,y,z;
x=10;
y=x++*3;
//結果x先乘以3並指定給y之後,x再執行+1,故y=30;x=11
z=++y*2 //結果y先+1.再乘以2指定給z.故z=62;y=31
希望...可以讓我繼續有鐵人發文的機會~拜託拜託