2017-05-29 70 views
-1

即時通訊android新手。
我開始按照一些教程,我做了一個簡單的應用程序。
我很困惑,開始其他的activity
我有3個活動loginmaintemp
當我main activity我要開始通過下面的代碼temp activity以正確的方式啓動Android的活動

@Override 
     public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
    int id = item.getItemId(); 

    Intent nextIntent; 
    switch (id){ 
     case R.id.item1: 
      nextIntent = new Intent(MainActivity.this, TempActivity.class); 
      startActivity(nextIntent); 
      overridePendingTransition(R.anim.pull_in_right, R.anim.push_out_left); 
      break; 
     case R.id.item2: 
      nextIntent = new Intent(MainActivity.this, TempActivity.class); 
      startActivity(nextIntent); 
      overridePendingTransition(R.anim.pull_in_right, R.anim.push_out_left); 
      break; 
     case R.id.item3: 
      nextIntent = new Intent(MainActivity.this, TempActivity.class); 
      startActivity(nextIntent); 
      overridePendingTransition(R.anim.pull_in_right, R.anim.push_out_left); 
      break; 
    } 

    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 

,我也做了同樣的login activity但不工作:

private void login() { 
    Log.d(TAG, "Login"); 

    _loginButton.setEnabled(false); 

    //show spinner 
    final ProgressDialog progressDialog = new ProgressDialog(LoginActivity.this, 
      R.style.AppTheme_Dark_Dialog); 
    progressDialog.setIndeterminate(true); 
    progressDialog.setMessage("Authenticating..."); 
    progressDialog.show(); 

    // TODO: Implement your own authentication logic here. 

    new android.os.Handler().postDelayed(
      new Runnable() { 
       public void run() { 
        // On complete call either onLoginSuccess or onLoginFailed 
        onLoginSuccess(); 
        // onLoginFailed(); 
        progressDialog.dismiss(); 
       } 
      }, 3000); 
} 
@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == requestCode) { 
     if (resultCode == RESULT_OK) { 

      // TODO: Implement successful signup logic here 
      // By default we just finish the Activity and log them in automatically 
      startActivity(new Intent(this, MainActivity.class)); 
      this.finish(); 
     } 
    } 
} 

public void onLoginSuccess() { 
    //do nothing 
    finish(); 
} 
我不得不這樣做:

爲什麼requestCode == requestCode我找不到功能setRequestCodesetResultCode
最後一個問題:我應該使用的fragment代替activity分享我NavigationBar因爲現在我必須包括navigationBar佈局tempActivity佈局,相同的java code

回答

1

首先沒必要用ProgressDialog啓動任何活動它並不需要太多的時間,ProgressDialog用於類調用服務器,上傳/下載圖像等

長期運行的操作

啓動活動簡單

Intent intent = new Intent(YourCurrentActivity.this, LoginActivity.class); 
startActivity(intent); 

這就是它沒有更多

現在你想,當你想獲得一些數據,從你吃午飯

對於這個看這個帖子的活動回數據傳遞到活動比

Intent intent = new Intent(YourCurrentActivity.this, LoginActivity.class); 
intent.putExtra("INTENT_PARAM", YourValue); 
startActivity(intent); 

onActivityResult()使用這種方法 - https://stackoverflow.com/a/10407371/4741746

爲什麼requestCode == requestCode我找不到功能setRequestCode 像setResultCode

onActivityResult()方法只調用startActivityForResult()和你的情況下調用startActivity,呼籲像startActivityForResult (intent, 100);這裏100 requestCode和結果代碼是

Intent returnIntent = new Intent(); 
setResult(Activity.RESULT_CANCELED, returnIntent); 
finish(); 

在這裏活動。RESULT_CANCELED是你的resultCode爲

建議就像是

Intent intent = new Intent(YourCurrentActivity.this, LoginActivity.class); 
startActivity(intent); 

我應該使用片段而不是活動分享我的導航欄

呼叫活動是你可以把這個佈局在您的xml

<RelativeLayout 
       android:id="@+id/fragment_container" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" /> 

,並添加不同的片段

public void addYourFragment(){ 
       YourFragment myFragment = new YourFragment(); 
       FragmentManager fragmentManager = this.getSupportFragmentManager(); 
       FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
       fragmentTransaction.replace(R.id.fragment_container, myFragment, tagToUniqlyIdentifiedFramgent); 
       fragmentTransaction.addToBackStack(tagToUniqlyIdentifiedFramgent); 
       fragmentTransaction.commit();      
} 

調用此方法在開關

switch (id){ 
     case R.id.item1: 
      addYourFragment(); 
      break; 
     case R.id.item2:   
      addYourFragmentTwo() 
      break; 
     case R.id.item3: 
      addYourFragmentThree() 
      break; 
    } 
+0

感謝您的響應,我使用progressDialog,因爲它將連接到服務器登錄 –

+0

我設置'登錄'作爲啓動活動如何'startActivityforResult'爲它 –

+0

Intent i = new Intent(this,SecondActivity.class); startActivityForResult(i,1);像這樣的東西 –

0

你可以從這些代碼幫助:

public class ListActivityExample extends ListActivity { 
    static final String[] ACTIVITY_CHOICES = new String[] { 
     "Open Website Example", 
     "Open Contacts", 
     "Open Phone Dialer Example", 
     "Search Google Example", 
     "Start Voice Command" 
    }; 
    final String searchTerms = "superman"; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setListAdapter(new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, ACTIVITY_CHOICES)); 
     getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
     getListView().setTextFilterEnabled(true); 
     getListView().setOnItemClickListener(new OnItemClickListener() 
     { 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, 
        int arg2, long arg3) { 
       switch(arg2) { 
       case 0: //opens web browser and navigates to given website 
        startActivity(new Intent(Intent.ACTION_VIEW, 
          Uri.parse("http://www.android.com/"))); 
        break; 
       case 1: //opens contacts application to browse contacts 
        startActivity(new Intent(Intent.ACTION_VIEW, 
          Uri.parse("content://contacts/people/"))); 
        break; 
       case 2: //opens phone dialer and fills in the given number 
        startActivity(new Intent(Intent.ACTION_VIEW, 
          Uri.parse("tel:12125551212"))); 
        break; 
       case 3: //search Google for the string 
        Intent intent= new Intent(Intent.ACTION_WEB_SEARCH); 
        intent.putExtra(SearchManager.QUERY, searchTerms); 
        startActivity(intent); 
        break; 
       case 4: //starts the voice command 
        startActivity(new 
            Intent(Intent.ACTION_VOICE_COMMAND)); 
        break; 
       default: break; 
       } 
      } 
     }); 
    } 
} 


細節http://www.informit.com/articles/article.aspx?p=1646053&seqNum=3

+0

我想被問及'登錄activity'爲什麼有差異的方式做的,開始主要'activity' –

+0

你的代碼不理解.............. – omor

+0

@HoàngĐăng,請閱讀全文,讓你瞭解........ – omor