Android排球请求

时间:2018-05-01 22:22:52

标签: android android-fragments android-volley

我正在尝试构建一个可以从服务器获取某些信息的应用程序,以便我可以将其显示给用户。

我被告知将Volley视为一种方法。

我试图在片段中执行此操作,并且只有一个活动(Main_Activity),并且只需根据需要换出片段。

在我的登录片段中,我有以下代码:

public class loginFragment extends Fragment {

//Local Vars
private boolean loginCheck = false;

//required constructor
public loginFragment() {
    // Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_login, container, false);
}

//When login button is clicked, this method is called
private void login(View view) {
    String username;
    String password;

    username = getView().findViewById(R.id.enteredUsername).toString();
    password = getView().findViewById(R.id.enteredPassword).toString();





    final ArrayList<String> info = new ArrayList<>();

    String[] unameSeparated = new String[username.length()];
    unameSeparated = username.split("(?!^)");

    String startUrl = "https://us.api.battle.net/d3/profile/";
    String uname = "";
    String APIKey = "/?(pretend this is my API key)";

    //Separating the username into the parts needed for sending request
    for (int i = 0; i < unameSeparated.length; i++) {
        if ((unameSeparated[i].equals("#"))) {
            //Replacing # with '%23'
            uname += "%23";
        } else {
            uname += unameSeparated[i];
        }
    }

    String url = startUrl + uname+ APIKey;

    // Instantiate the RequestQueue.
    RequestQueue queue = Volley.newRequestQueue(getActivity());

    // Request a string response from the provided URL.
    StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    info.add(response);
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    });

    // Add the request to the RequestQueue.
    queue.add(stringRequest);

}

public boolean isLoggedIn() {
    return loginCheck;
}



}

因此,当用户输入他们的用户名并点击登录按钮时,它应该将请求发送到服务器,并获取他们的数据并将其放入arraylist(我将更改它以将其放入文件以后我想,甚至只是一个变量)

目前设置方式,当我运行它时,单击登录按钮时出现错误,并显示:

04-28 18:55:40.358 6224-6224/com.hfad.diablo3assistant E/AndroidRuntime: FATAL EXCEPTION: main
                                                                     Process: com.hfad.diablo3assistant, PID: 6224
                                                                     java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
                                                                         at android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.java:394)
                                                                         at android.support.v4.app.BackStackRecord.replace(BackStackRecord.java:441)
                                                                         at android.support.v4.app.BackStackRecord.replace(BackStackRecord.java:432)
                                                                         at com.hfad.diablo3assistant.MainActivity.swapFragment(MainActivity.java:76)
                                                                         at com.hfad.diablo3assistant.MainActivity.onOptionsItemSelected(MainActivity.java:48)
                                                                         at android.app.Activity.onMenuItemSelected(Activity.java:3450)
                                                                         at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:368)
                                                                         at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:195)
                                                                         at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:108)
                                                                         at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:108)
                                                                         at android.support.v7.app.ToolbarActionBar$2.onMenuItemClick(ToolbarActionBar.java:65)
                                                                         at android.support.v7.widget.Toolbar$1.onMenuItemClick(Toolbar.java:202)
                                                                         at android.support.v7.widget.ActionMenuView$MenuBuilderCallback.onMenuItemSelected(ActionMenuView.java:780)
                                                                         at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:822)
                                                                         at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:171)
                                                                         at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:973)
                                                                         at android.support.v7.view.menu.MenuPopup.onItemClick(MenuPopup.java:127)
                                                                         at android.widget.AdapterView.performItemClick(AdapterView.java:318)
                                                                         at android.widget.AbsListView.performItemClick(AbsListView.java:1158)
                                                                         at android.widget.AbsListView$PerformClick.run(AbsListView.java:3127)
                                                                         at android.widget.AbsListView$3.run(AbsListView.java:4042)
                                                                         at android.os.Handler.handleCallback(Handler.java:790)
                                                                         at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                         at android.os.Looper.loop(Looper.java:164)
                                                                         at android.app.ActivityThread.main(ActivityThread.java:6494)
                                                                         at java.lang.reflect.Method.invoke(Native Method)
                                                                         at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

选择菜单选项的主要活动代码:

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    int item_id = item.getItemId();
    switch (item_id) {
        case R.id.accDetails:
            swapFragment(item_id);
            return true;
        case R.id.personalProfileLookup:
            swapFragment(item_id);
            return true;
        case R.id.favoriteCharacters:
            swapFragment(item_id);
            return true;
        case R.id.friendProfileLookup:
            swapFragment(item_id);
            return true;
        case R.id.tipsAndTricks:
            swapFragment(item_id);
            return true;
    }

    return false;
}

交换片段的主要活动代码:

private void swapFragment(int fragmentID){

    TextView tracker = (TextView) findViewById(R.id.currentFragDisplay);

    Fragment fragment = null;
    if(fragmentID == R.id.personalProfileLookup) {
        tracker.setText("My Profile");
        fragment = new Personal_Profile_Fragment();
    } else if(fragmentID == R.id.favoriteCharacters) {
        tracker.setText("Favorite Characters");
        fragment = new Favorite_Characters_Fragment();
    } else if(fragmentID == R.id.friendProfileLookup) {
        tracker.setText("Friend Lookup");
        fragment = new Friend_Profile_Fragment();
    } else if(fragmentID == R.id.tipsAndTricks) {
        tracker.setText("Tips and Tricks");
        fragment = new TipsandTricks_Fragment();
    } else if(fragmentID == R.id.accDetails) {
        tracker.setText("Log In");
        fragment = new loginFragment();
    }


    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.replace(R.id.fragmentContainer, fragment);
    fragmentTransaction.addToBackStack(null);
    fragmentTransaction.commit();

}

0 个答案:

没有答案