EditView txtWrite = (EditText) findViewById(R.id.editText);
2015年10月31日 星期六
Android Studio R 顯示紅色
當 R 顯示紅色如下時, 可按 Build -> Rebuild Project 解決
2015年10月27日 星期二
2015年10月25日 星期日
android 讀取, 寫入及刪除檔案 (internal storage)
版面要加入一個editView, 一個textView及三個 Button (editView, textView, btnRead, btnWrite, btnDel)
MainActivity.java
MainActivity.java
import android.content.Context; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.view.View.OnClickListener; import android.widget.Toast; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class MainActivity extends ActionBarActivity { private Button btnTxtRead; private Button btnTxtWrite; private Button btnFileDel; private EditText txtWrite; private TextView txtRead; String fileName = "dateRec.dat"; @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); txtWrite = (EditText) findViewById(R.id.editText); txtRead = (TextView) findViewById(R.id.textView); btnTxtRead = (Button) findViewById(R.id.btnRead); btnTxtWrite = (Button) findViewById(R.id.btnWrite); btnFileDel = (Button) findViewById(R.id.btnDel); btnTxtRead.setOnClickListener(btnListener); btnTxtWrite.setOnClickListener(btnListener); btnFileDel.setOnClickListener(btnListener); } private void writer() { FileOutputStream fos = null; try { fos = openFileOutput(fileName, Context.MODE_PRIVATE); fos.write(txtWrite.getText().toString().getBytes()); fos.close(); File file = new File(getFilesDir() + "/" + fos); Toast.makeText(getApplicationContext(), file.getAbsolutePath(), Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); } } private void reader() { FileInputStream fos = null; BufferedInputStream buffered = null; txtRead.setText(""); try { fos = openFileInput(fileName); buffered = new BufferedInputStream(fos); byte[] buffbyte = new byte[200]; txtRead.setText(""); do { int flag = buffered.read(buffbyte); if (flag == -1) { break; } else { txtRead.append(new String(buffbyte), 0, flag); } }while (true); buffered.close(); } catch (Exception e) { e.printStackTrace(); } } private void fileDel() { File file = new File(getFilesDir() + "/" + fileName); if (file.exists()){ file.delete(); Toast.makeText(getBaseContext(), "File deleted", Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(getBaseContext(), "File doesn't exist", Toast.LENGTH_SHORT).show(); } } private OnClickListener btnListener = new OnClickListener() { public void onClick(View v) { switch (v.getId()) { case R.id.btnRead: try { Toast.makeText(getApplicationContext(), "Read button pressed", Toast.LENGTH_SHORT).show(); reader(); } catch (Exception e) { e.printStackTrace(); } break; case R.id.btnWrite: try { Toast.makeText(getApplicationContext(), "Write button pressed", Toast.LENGTH_SHORT).show(); writer(); } catch (Exception e) { e.printStackTrace(); } break; case R.id.btnDel: try { Toast.makeText(getApplicationContext(), "Del button pressed", Toast.LENGTH_SHORT).show(); fileDel(); } catch (Exception e) { e.printStackTrace(); } break; } } }; }
2015年10月23日 星期五
android 有多個按鍵 (button) 時使用switch statement
版面要加入三個 Button (btnRead, btnWrite, btnDel)
MainActivity.java
MainActivity.java
import android.content.DialogInterface; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.view.View.OnClickListener; import android.widget.Toast; public class MainActivity extends ActionBarActivity { private Button btnTxtRead; private Button btnTxtWrite; private Button btnFileDel; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnTxtRead = (Button) findViewById(R.id.btnRead); btnTxtWrite = (Button) findViewById(R.id.btnWrite); btnFileDel = (Button) findViewById(R.id.btnDel); btnTxtRead.setOnClickListener(btnListener); btnTxtWrite.setOnClickListener(btnListener); btnFileDel.setOnClickListener(btnListener); } private OnClickListener btnListener = new OnClickListener() { public void onClick(View v) { switch (v.getId()) { case R.id.btnRead: try { Toast.makeText(getApplicationContext(), "Read button pressed", Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); }
break;
case R.id.btnWrite: try { Toast.makeText(getApplicationContext(), "Write button pressed", Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); }
break;
case R.id.btnDel: try { Toast.makeText(getApplicationContext(), "Del button pressed", Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); } break; } } }; }
2015年10月13日 星期二
android 螢幕旋轉時不重新執行onCreate()
預設中, 螢幕旋轉時會重新執行 onCreate(), 要制止重新執行, 可以有以下兩個方法:
1. 禁止螢幕旋轉
於 AndroidManifest.xml 檔裡, 在 <activity> </activity> 中, 添加一條屬性資訊:
android:screenOrientation="portrait" (強制縱向)
android:screenOrientation="landscape" (強制橫向)
如下:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
2. 螢幕旋轉時不重新執行onCreate()
於 AndroidManifest.xml 檔裡, 在 <activity> </activity> 中, 添加一條屬性資訊:
android:configChanges=”orientation|keyboardHidden”
(如API 等級等於或高於13要加 screenSize)
android:configChanges="orientation|keyboardHidden|screenSize”
如下:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden|screenSize">
於 activity 中, 加入
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
}
else {
}
}
1. 禁止螢幕旋轉
於 AndroidManifest.xml 檔裡, 在 <activity> </activity> 中, 添加一條屬性資訊:
android:screenOrientation="portrait" (強制縱向)
android:screenOrientation="landscape" (強制橫向)
如下:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
2. 螢幕旋轉時不重新執行onCreate()
於 AndroidManifest.xml 檔裡, 在 <activity> </activity> 中, 添加一條屬性資訊:
android:configChanges=”orientation|keyboardHidden”
(如API 等級等於或高於13要加 screenSize)
android:configChanges="orientation|keyboardHidden|screenSize”
如下:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden|screenSize">
於 activity 中, 加入
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
}
else {
}
}
android 禁止螢幕旋轉 (強制設定為縱向或橫向)
於 AndroidManifest.xml 檔裡, 在 <activity> </activity> 中, 添加一條屬性資訊:
android:screenOrientation="portrait" (強制縱向)
android:screenOrientation="landscape" (強制橫向)
如下:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
android:screenOrientation="portrait" (強制縱向)
android:screenOrientation="landscape" (強制橫向)
如下:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
android 寫入檔案 (簡短文字) FileInputStream, FileOutputStream
寫入簡短文字可使用寫入文字檔方法, 如複雜便要用SQLite
版面要加入一個editView, 一個textView 及 兩個 Button (editView1, textView2, btnWrite, btnRead)
輸入字於 editView1, 按下 btnWrite 便會寫入檔案 output 及顯示檔案路徑 (toast), 按下 btnRead 便會讀出檔案及顯示於 textView2
注意: 讀取中文字, 中文字每個要 2 個 Byte.
MainActivity.java
版面要加入一個editView, 一個textView 及 兩個 Button (editView1, textView2, btnWrite, btnRead)
輸入字於 editView1, 按下 btnWrite 便會寫入檔案 output 及顯示檔案路徑 (toast), 按下 btnRead 便會讀出檔案及顯示於 textView2
注意: 讀取中文字, 中文字每個要 2 個 Byte.
MainActivity.java
import android.content.Context; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final EditText txtWrite = (EditText) findViewById(R.id.editText1); final TextView txtRead = (TextView) findViewById(R.id.textView2); Button btnTxtRead = (Button) findViewById(R.id.btnRead); Button btnTxtWrite = (Button) findViewById(R.id.btnWrite); btnTxtWrite.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { try { FileOutputStream fos = openFileOutput("output", Context.MODE_PRIVATE); fos.write(txtWrite.getText().toString().getBytes()); fos.close(); File file = new File(getFilesDir() + "/" + fos); Toast.makeText(getApplicationContext(), file.getAbsolutePath(), Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); } } }); btnTxtRead.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { FileInputStream fos = null; BufferedInputStream buffered = null; try { fos = openFileInput("output"); buffered = new BufferedInputStream(fos); byte[] buffbyte = new byte[200]; txtRead.setText(""); do { int flag = buffered.read(buffbyte); if (flag == -1) { break; } else { txtRead.append(new String(buffbyte), 0, flag); } }while (true); buffered.close(); } catch (Exception e) { e.printStackTrace(); } } }); } }
訂閱:
文章 (Atom)