主要就是在註冊Activity輸入資料(賬號和密碼10組,外加一個 i 表示當前註冊到第幾個空位, 註冊了就1++),
然後傳送到登錄Activity把賬號密碼賦予object,
最後再配對賬號和密碼,
如果賬號和密碼不等於null,
並且可以配對,
就跳去遊戲頁面
求各位大神提點下,我現在完全一頭霧水
這是登錄Activity
package com.example.user.eee3457_mini_project;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private Button loginbtn , signupbtn , aboutgamebtn ;
private EditText loginid , loginpw ;
private String getid , getpw ;
private String[] takeid ;
private String[] takepw ;
private int idi , pwi ;
private int getidpwi;
private String esignid, esignpw ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loginbtn = (Button)findViewById(R.id.loginbtn);
signupbtn = (Button)findViewById(R.id.signupbtn);
aboutgamebtn = (Button)findViewById(R.id.aboutgamebtn);
loginid = (EditText)findViewById(R.id.loginid);
loginpw = (EditText)findViewById(R.id.loginpw);
}
public void aboutgamepage(View v){
Intent itaboutgame = new Intent(MainActivity.this , aboutgame.class);
startActivity(itaboutgame);
}
public void signuppage(View v){
Intent itsignup = new Intent(MainActivity.this , Signup.class);
startActivity(itsignup);
}
public void gameindexpage(View v){
Bundle bundleIDPW = getIntent().getExtras();
esignid=bundleIDPW.getString("bID" , null);
esignpw=bundleIDPW.getString("bPW" , null);
SharedPreferences userID =
getSharedPreferences("User_ID", MODE_PRIVATE);
SharedPreferences userPW =
getSharedPreferences("User_PW", MODE_PRIVATE);
Intent itnum = getIntent();
getidpwi=itnum.getIntExtra("num" , 0);
switch(getidpwi) {
case 1:
userID.edit()
.putString("ID1", esignid.toString())
.commit();
userPW.edit()
.putString("PW1", esignpw.toString())
.commit();
break;
case 2:
userID.edit()
.putString("ID2", esignid.toString())
.commit();
userPW.edit()
.putString("PW2", esignpw.toString())
.commit();
break;
case 3:
userID.edit()
.putString("ID3", esignid.toString())
.commit();
userPW.edit()
.putString("PW3", esignpw.toString())
.commit();
break;
case 4:
userID.edit()
.putString("ID4", esignid.toString())
.commit();
userPW.edit()
.putString("PW4", esignpw.toString())
.commit();
break;
case 5:
userID.edit()
.putString("ID5", esignid.toString())
.commit();
userPW.edit()
.putString("PW5", esignpw.toString())
.commit();
break;
case 6:
userID.edit()
.putString("ID6", esignid.toString())
.commit();
userPW.edit()
.putString("PW6", esignpw.toString())
.commit();
break;
case 7:
userID.edit()
.putString("ID7", esignid.toString())
.commit();
userPW.edit()
.putString("PW7", esignpw.toString())
.commit();
break;
case 8:
userID.edit()
.putString("ID8", esignid.toString())
.commit();
userPW.edit()
.putString("PW8", esignpw.toString())
.commit();
break;
case 9:
userID.edit()
.putString("ID9", esignid.toString())
.commit();
userPW.edit()
.putString("PW9", esignpw.toString())
.commit();
break;
case 10:
userID.edit()
.putString("ID10", esignid.toString())
.commit();
userPW.edit()
.putString("PW10", esignpw.toString())
.commit();
break;
}
takeid[1] = userID.getString("ID1", "NULL");
takepw[1] = userPW.getString("PW1", "NULL");
takeid[2] = userID.getString("ID2", "NULL");
takepw[2] = userPW.getString("PW2", "NULL");
takeid[3] = userID.getString("ID3", "NULL");
takepw[3] = userPW.getString("PW3", "NULL");
takeid[4] = userID.getString("ID4", "NULL");
takepw[4] = userPW.getString("PW4", "NULL");
takeid[5] = userID.getString("ID5", "NULL");
takepw[5] = userPW.getString("PW5", "NULL");
takeid[6] = userID.getString("ID6", "NULL");
takepw[6] = userPW.getString("PW6", "NULL");
takeid[7] = userID.getString("ID7", "NULL");
takepw[7] = userPW.getString("PW7", "NULL");
takeid[8] = userID.getString("ID8", "NULL");
takepw[8] = userPW.getString("PW8", "NULL");
takeid[9] = userID.getString("ID9", "NULL");
takepw[9] = userPW.getString("PW9", "NULL");
takeid[10] = userID.getString("ID10", "NULL");
takepw[10] = userPW.getString("PW10", "NULL");
getid = loginid.getText().toString();
getpw = loginpw.getText().toString();
for(int i=1;i<=10;i++){
if(getid==takeid[i]){
idi=i;
}
if(getpw==takepw[i]){
pwi=i;
}
}
if(getid != null && getpw != null){
if(idi==pwi){
Toast lt = Toast.makeText(MainActivity.this,"登入成功", Toast.LENGTH_LONG);
lt.show();
Intent itgameindex = new Intent(MainActivity.this , gameindex.class);
startActivity(itgameindex);
}else{
Toast lf = Toast.makeText(MainActivity.this,"賬號或密碼錯誤", Toast.LENGTH_LONG);
lf.show();
}
}
}
}
這是註冊Activity
package com.example.user.eee3457_mini_project;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class Signup extends AppCompatActivity {
private Button esignupbtn , ebackloginmenu ;
private EditText esignid , esignpw , esignpw2 ;
private TextView esignmessage ;
private String signidstring , signpwstring , signpw2string ;
private int idpwi;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
esignupbtn = (Button)findViewById(R.id.esignupbtn);
ebackloginmenu = (Button)findViewById(R.id.ebackloginmenu);
esignid = (EditText)findViewById(R.id.esignid);
esignpw = (EditText)findViewById(R.id.esignpw);
esignpw2 = (EditText)findViewById(R.id. esignpw2);
esignmessage = (TextView)findViewById(R.id.esignmessage);
}
public void backmain(View v){
Intent itbackmain = new Intent(Signup.this , MainActivity.class);
startActivity(itbackmain);
}
public void esignup(View v){
signidstring = esignid.getText().toString();
signpwstring = esignpw.getText().toString();
signpw2string = esignpw2.getText().toString();
if(signidstring != null && signpwstring!= null && signpw2string !=null && signpwstring==signpw2string){
idpwi++;
Bundle bundleIDPW = new Bundle();
bundleIDPW.putString("bID", esignid.getText().toString());
bundleIDPW.putString("bPW", esignpw.getText().toString());
Intent itbundle = new Intent(this, MainActivity.class);
Intent itnum = new Intent(this, MainActivity.class);
itbundle.putExtras(bundleIDPW);
itnum.putExtra("num" , idpwi);
startActivity(itbundle);
startActivity(itnum);
Toast t = Toast.makeText(Signup.this,"已成功註冊", Toast.LENGTH_LONG);
t.show();
}else{
Toast f = Toast.makeText(Signup.this,"註冊失敗,輸入錯誤", Toast.LENGTH_LONG);
f.show();
}
}
}
uj5u.com熱心網友回復:
報啥錯呀,大佬,沒人會去看代碼的,把你的錯誤日志發出來uj5u.com熱心網友回復:
也是哦0.0
錯誤日誌:
04/18 16:32:12: Launching app
$ adb install-multiple -r -t C:\EEE3457\EEE3457_mini_project\app\build\intermediates\split-apk\debug\slices\slice_3.apk C:\EEE3457\EEE3457_mini_project\app\build\intermediates\split-apk\debug\slices\slice_8.apk C:\EEE3457\EEE3457_mini_project\app\build\intermediates\split-apk\debug\slices\slice_4.apk C:\EEE3457\EEE3457_mini_project\app\build\intermediates\split-apk\debug\slices\slice_2.apk C:\EEE3457\EEE3457_mini_project\app\build\intermediates\split-apk\debug\slices\slice_1.apk C:\EEE3457\EEE3457_mini_project\app\build\intermediates\split-apk\debug\slices\slice_0.apk C:\EEE3457\EEE3457_mini_project\app\build\intermediates\resources\instant-run\debug\resources-debug.apk C:\EEE3457\EEE3457_mini_project\app\build\intermediates\split-apk\debug\dep\dependencies.apk C:\EEE3457\EEE3457_mini_project\app\build\intermediates\split-apk\debug\slices\slice_5.apk C:\EEE3457\EEE3457_mini_project\app\build\intermediates\split-apk\debug\slices\slice_6.apk C:\EEE3457\EEE3457_mini_project\app\build\intermediates\split-apk\debug\slices\slice_7.apk C:\EEE3457\EEE3457_mini_project\app\build\intermediates\split-apk\debug\slices\slice_9.apk C:\EEE3457\EEE3457_mini_project\app\build\intermediates\instant-run-apk\debug\app-debug.apk
Split APKs installed in 2 s 397 ms
$ adb shell am start -n "com.example.user.eee3457_mini_project/com.example.user.eee3457_mini_project.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Client not ready yet..Waiting for process to come online
Waiting for process to come online
Connected to process 4392 on device Nexus_4_API_28 [emulator-5554]
Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
I/57_mini_projec: Not late-enabling -Xcheck:jni (already on)
W/57_mini_projec: Unexpected CPU variant for X86 using defaults: x86
E/57_mini_projec: Failed to send jdwp-handshake response.: Broken pipe
W/57_mini_projec: JIT profile information will not be recorded: profile file does not exits.
I/chatty: uid=10100(com.example.user.eee3457_mini_project) identical 10 lines
W/57_mini_projec: JIT profile information will not be recorded: profile file does not exits.
I/InstantRun: starting instant run server: is main process
W/57_mini_projec: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection)
W/57_mini_projec: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection)
D/OpenGLRenderer: Skia GL Pipeline
D/HostConnection: HostConnection::get() New Host Connection established 0xe2429240, tid 4428
D/HostConnection: HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_native_sync_v2 ANDROID_EMU_native_sync_v3 ANDROID_EMU_native_sync_v4 ANDROID_EMU_dma_v1 ANDROID_EMU_YUV420_888_to_NV21 ANDROID_EMU_YUV_Cache ANDROID_EMU_async_unmap_buffer GL_OES_EGL_image_external_essl3 GL_OES_vertex_array_object GL_KHR_texture_compression_astc_ldr ANDROID_EMU_gles_max_version_3_1
I/ConfigStore: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0
android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasHDRDisplay retrieved: 0
I/OpenGLRenderer: Initialized EGL, version 1.4
D/OpenGLRenderer: Swap behavior 1
W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
D/OpenGLRenderer: Swap behavior 0
D/eglCodecCommon: setVertexArrayObject: set vao to 0 (0) 0 0
D/EGL_emulation: eglCreateContext: 0xea0e6e20: maj 3 min 1 rcv 4
D/EGL_emulation: eglMakeCurrent: 0xea0e6e20: ver 3 1 (tinfo 0xea031d50)
E/eglCodecCommon: glUtilsParamSize: unknow param 0x000082da
E/eglCodecCommon: glUtilsParamSize: unknow param 0x000082da
D/HostConnection: createUnique: call
HostConnection::get() New Host Connection established 0xe24297e0, tid 4428
D/HostConnection: HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_native_sync_v2 ANDROID_EMU_native_sync_v3 ANDROID_EMU_native_sync_v4 ANDROID_EMU_dma_v1 ANDROID_EMU_YUV420_888_to_NV21 ANDROID_EMU_YUV_Cache ANDROID_EMU_async_unmap_buffer GL_OES_EGL_image_external_essl3 GL_OES_vertex_array_object GL_KHR_texture_compression_astc_ldr ANDROID_EMU_gles_max_version_3_1
E/eglCodecCommon: GoldfishAddressSpaceHostMemoryAllocator: ioctl_ping failed for device_type=5, ret=-1
D/EGL_emulation: eglMakeCurrent: 0xea0e6e20: ver 3 1 (tinfo 0xea031d50)
D/eglCodecCommon: setVertexArrayObject: set vao to 0 (0) 3 2
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.user.eee3457_mini_project, PID: 4392
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390)
at android.view.View.performClick(View.java:6597)
at android.view.View.performClickInternal(View.java:6574)
at android.view.View.access$3100(View.java:778)
at android.view.View$PerformClick.run(View.java:25885)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)
at android.view.View.performClick(View.java:6597)
at android.view.View.performClickInternal(View.java:6574)
at android.view.View.access$3100(View.java:778)
at android.view.View$PerformClick.run(View.java:25885)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String, java.lang.String)' on a null object reference
at com.example.user.eee3457_mini_project.MainActivity.gameindexpage(MainActivity.java:44)
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)
at android.view.View.performClick(View.java:6597)
at android.view.View.performClickInternal(View.java:6574)
at android.view.View.access$3100(View.java:778)
at android.view.View$PerformClick.run(View.java:25885)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Application terminated.
uj5u.com熱心網友回復:
可是裡面也有其他頁面的,我看看能不能直接把檔案放上來
uj5u.com熱心網友回復:
那,空指標例外,你看你點擊的哪個按鈕,那么這個按鈕里面的值為啥不給賦值uj5u.com熱心網友回復:
按鈕是這個:
public void gameindexpage(View v){
可能是因為一開始的頁面就是登陸頁面,沒在註冊頁面把資料傳進登陸頁面先,
所以沒值
檔案下載:
https://drive.google.com/file/d/1d-ygG8QdAiBp0wUTxkXNrxpDHEo0JrhM/view
uj5u.com熱心網友回復:
看logcat日志,翻到屬于你代碼的錯誤轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/42433.html
標籤:Android
