2017-03-09 19 views
-4

我想为我的应用程序创建一个屏幕,允许用户创建用户名,然后启动应用程序。我已经拥有了一个我想让用户做的所有事情的屏幕,但是我现在想添加一个用户在进入活动屏幕之前必须使用的登录屏幕。我设计了登录屏幕,并准备好一个单独的课程。 Doe的任何人都知道如何解决这个问题,以便MainActivity首先加载登录信息?我假设我需要设置某种布尔标志,允许Main加载应用程序的其余部分?创建用户名和启动应用程序

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.login); 
    setContentView(R.layout.activity_main); 

    Size = (SeekBar)findViewById(R.id.size); 
    Speed =(SeekBar)findViewById(R.id.speed); 
    Agility=(SeekBar)findViewById(R.id.agility); 
    Vision =(SeekBar)findViewById(R.id.vision); 


    text = (TextView) findViewById(R.id.text); 
    Size.setOnSeekBarChangeListener(this); 
    Speed.setOnSeekBarChangeListener(this); 
    Agility.setOnSeekBarChangeListener(this); 
    Vision.setOnSeekBarChangeListener(this); 

} 

我有我的登录设置内容视图。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/login" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin"> 

    <Button 
     android:text="Begin" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/begin" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="124dp" /> 

    <EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:inputType="textPersonName" 
     android:text="Name" 
     android:ems="10" 
     android:layout_above="@+id/begin" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:layout_marginRight="88dp" 
     android:layout_marginEnd="88dp" 
     android:layout_marginBottom="149dp" 
     android:id="@+id/editText2" /> 

</RelativeLayout> 

我有我的布局。我也有班级,现在是空的。

我将不得不在我的AndroidManifest内部做些什么?

回答

0

当前您的MainActivity是MAIN LAUNCHER的主要活动。将其更改为LogInACtivity,然后您的LogInActivity将首先启动。在您的清单中,从MainActivity的活动标记中剪下以下代码并将其粘贴到新创建的LogInActivity的活动标记中;

<intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 

希望这会有所帮助。

0

您可以尝试启动基于布尔型SharedPreference的活动或activity for a result(用户名)。因此,请像正常一样启动MainActivity,并在onCreate()中检查用户是否使用其用户名登录。如果没有,则显示登录屏幕。用户登录时,更改SharedPreference值。

代码

// In onCreate()... 
SharedPreferences prefs = PreferenceManager 
    .getDefaultSharedPreferences(StartActivity.this); 

if (!prefs.getBoolean("LoggedIn", false)) { 
    // Launch login activity 
} else { 
    // Do something else 
} 

// In your Login Activity, preferably after the user has provided a valid username... 

SharedPreferences prefs = PreferenceManager 
    .getDefaultSharedPreferences(StartActivity.this); 
SharedPreferences.Editor editor = prefs.edit(); 

// Set LoggedIn to true 
editor.putBoolean("LoggedIn", true); 
editor.putString("username", <The username they chose>); 

希望这有助于!就整个布尔事物而言,你处于正确的轨道上,但只是检查一个本地声明的变量就不会削减它。您需要将数据实际存储在系统中以便稍后进行检查,例如在连续启动期间。

0

将它添加到清单似乎有伎俩。谢谢!

+0

不客气。请删除这个答案。你可能打算评论,而不是错误地回答。顺便说一句,你可以将我的答案标记为接受,如果它的工作。 :) – tahsinRupam

相关问题