2014-01-09 3 views
1

У меня есть Фрагмент входа, когда пользователь впервые приходит в мое приложение, я использовал его имя пользователя и пароль и сохранял его в SharedPref. Так что в следующий раз ему не нужно введите имя пользователя и пароль.Фрагмент не начинается с другого фрагмента в Android

Но то, что происходит, ничего не показывает, что он просто демонстрирует активность Blank, даже дизайн макета, который он не показывает.

Мои Войти FragmentActivity Код

public class Login extends FragmentActivity { 
    public static String url = ""; 
    public static ProgressDialog progressDialog; 
    EditText username, password; 
    TextView error; 
    ImageView ok; 
    static String AppResponse = null; 
    ProgressDialog pd; 
    private Fragment dashboardFragment; 
    View rootView = null; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     SharedPreferences shared = getSharedPreferences("shared", MODE_PRIVATE); 
     dashboardFragment = new DashBoardFragment(); 
     if (shared.contains("username") && shared.contains("password")) { 

      startingActivity(); 
     } else { 
      progressDialog = new ProgressDialog(this); 
      progressDialog.setMessage("Please Wait Validating .!!!"); 
      progressDialog.setIndeterminate(false); 
      progressDialog.setProgressStyle(ProgressDialog.THEME_HOLO_DARK); 
      progressDialog.setCancelable(false); 
      rootView = inflater.inflate(R.layout.activity_login, container, 
        false); 
      username = (EditText) rootView.findViewById(R.id.textUserName); 
      password = (EditText) rootView.findViewById(R.id.textPassword); 
      ok = (ImageView) rootView.findViewById(R.id.btn_login); 
      error = (TextView) rootView.findViewById(R.id.error_view); 
      pd = new ProgressDialog(this); 
      pd.setMessage("Logging In"); 
      ok.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        String pass = password.getText().toString(); 
        String userId = username.getText().toString(); 
        boolean isConnected = isNetworkConnected(Login.this); 
        Log.d("Network Status", "Status is " + isConnected); 
        if (userId.equals("") || pass.equals("")) { 
         error.setText("Please provide UserName and Password...!!!!!"); 
        } else { 
         if (isConnected) { 
          postHttpRequest(userId, pass, error); 
         } else { 
          Toast.makeText(getApplicationContext(), 
            "No Network Connection", Toast.LENGTH_LONG) 
            .show(); 
         } 
        } 
       } 
      }); 
     } 
     return rootView; 
    } 

StartActivity

public void startingActivity() { 
     FragmentTransaction fragTran = getSupportFragmentManager() 
       .beginTransaction(); 
     fragTran.replace(R.id.content_frame, dashboardFragment); 
     fragTran.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
     fragTran.addToBackStack(null); 
     fragTran.commit(); 
    } 

DashBoardFragment

public class DashBoardFragment extends Fragment { 
    GridView gridView; 
    static final String[] DASHBOARD_LINKS = new String[] { }; 
    private Fragment approvalStatusFragment; 
    private Fragment pendingApprovalsFragment; 
    private Fragment flghtBookingFragment; 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.activity_dash_board, 
       container, false); 
     gridView = (GridView) rootView.findViewById(R.id.my_grid_view); 
     gridView.setAdapter(new ImageAdapter(getActivity(), DASHBOARD_LINKS)); 

     approvalStatusFragment = new ApprovalStatus(); 
     pendingApprovalsFragment = new PendingApprovals(); 
     flghtBookingFragment = new FlightBooking(); 

     final FragmentTransaction fragTran = getFragmentManager() 
       .beginTransaction(); 

     gridView.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View v, int arg2, 
        long arg3) { 
       if (DASHBOARD_LINKS[arg2].equals("Approvals")) { 
        fragTran.replace(R.id.content_frame, pendingApprovalsFragment); 
        fragTran.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
        fragTran.addToBackStack(null); 
        fragTran.commit(); 
       } 
       if (DASHBOARD_LINKS[arg2].equals("Flights")) { 
        fragTran.replace(R.id.content_frame, flghtBookingFragment); 
        fragTran.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
        fragTran.addToBackStack(null); 
        fragTran.commit(); 
       } 
       if (DASHBOARD_LINKS[arg2].equals("Trips")) { 
        fragTran.replace(R.id.content_frame, approvalStatusFragment); 
        fragTran.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
        fragTran.addToBackStack(null); 
        fragTran.commit(); 
       } 
      } 
     }); 
     return rootView; 
    } 
} 

Manifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.iween.newinfiniteapp" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.Login" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

Я получаю это исключение

01-09 11:26:01.162: E/AndroidRuntime(4164): FATAL EXCEPTION: main 
01-09 11:26:01.162: E/AndroidRuntime(4164): java.lang.IllegalArgumentException: No view found for id 0x7f09001e (com.iween.newinfiniteapp:id/content_frame) for fragment DashBoardFragment{412cfcf8 #0 id=0x7f09001e} 
01-09 11:26:01.162: E/AndroidRuntime(4164):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:919) 
01-09 11:26:01.162: E/AndroidRuntime(4164):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) 
01-09 11:26:01.162: E/AndroidRuntime(4164):  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 
01-09 11:26:01.162: E/AndroidRuntime(4164):  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467) 
01-09 11:26:01.162: E/AndroidRuntime(4164):  at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440) 
01-09 11:26:01.162: E/AndroidRuntime(4164):  at android.os.Handler.handleCallback(Handler.java:800) 
01-09 11:26:01.162: E/AndroidRuntime(4164):  at android.os.Handler.dispatchMessage(Handler.java:100) 
01-09 11:26:01.162: E/AndroidRuntime(4164):  at android.os.Looper.loop(Looper.java:194) 
01-09 11:26:01.162: E/AndroidRuntime(4164):  at android.app.ActivityThread.main(ActivityThread.java:5371) 
01-09 11:26:01.162: E/AndroidRuntime(4164):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-09 11:26:01.162: E/AndroidRuntime(4164):  at java.lang.reflect.Method.invoke(Method.java:525) 
01-09 11:26:01.162: E/AndroidRuntime(4164):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) 
01-09 11:26:01.162: E/AndroidRuntime(4164):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
01-09 11:26:01.162: E/AndroidRuntime(4164):  at dalvik.system.NativeStart.main(Native Method) 

* MainFragment *

public class MainFragment extends FragmentActivity { 
    // Within which the entire activity is enclosed 
    private DrawerLayout mDrawerLayout; 

    // ListView represents Navigation Drawer 
    private ListView mDrawerList; 
    private Fragment dashboardFragment; 

    // ActionBarDrawerToggle indicates the presence of Navigation Drawer in the 
    // action bar 
    private ActionBarDrawerToggle mDrawerToggle; 

    // Title of the action bar 
    private String mTitle = ""; 

    @SuppressLint("NewApi") 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main_fragment); 


     dashboardFragment = new DashBoardFragment(); 


     mTitle = "Infinite Travels"; 
     getActionBar().setTitle(mTitle); 
     getActionBar().setIcon(android.R.color.transparent); 

     // Getting reference to the DrawerLayout 
     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
     mDrawerList = (ListView) findViewById(R.id.drawer_list); 

     // Getting reference to the ActionBarDrawerToggle 
     mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 
       R.drawable.white_bar, R.string.drawer_open, 
       R.string.drawer_close) { 

      /** Called when drawer is closed */ 
      public void onDrawerClosed(View view) { 
       getActionBar().setTitle(mTitle); 
       invalidateOptionsMenu(); 
      } 

      /** Called when a drawer is opened */ 
      public void onDrawerOpened(View drawerView) { 
       // getActionBar().setTitle(""); 
       invalidateOptionsMenu(); 
      } 
     }; 

     // Setting DrawerToggle on DrawerLayout 
     mDrawerLayout.setDrawerListener(mDrawerToggle); 
     if (savedInstanceState == null) { 
      getUrl(0); 
     } 
     // Creating an ArrayAdapter to add items to the listview mDrawerList 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(
       getBaseContext(), R.layout.drawer_list_item, getResources() 
         .getStringArray(R.array.menus)); 

     // Setting the adapter on mDrawerList 
     mDrawerList.setAdapter(adapter); 

     // Enabling Home button 
     getActionBar().setHomeButtonEnabled(true); 

     // Enabling Up navigation 
     getActionBar().setDisplayHomeAsUpEnabled(true); 

     // Setting item click listener for the listview mDrawerList 
     mDrawerList.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       // Getting an array of rivers 
       String[] menuItems = getResources().getStringArray(
         R.array.menus); 

       // Currently selected river 
       mTitle = menuItems[position]; 
       getUrl(position); 

       // Closing the drawer 
       mDrawerLayout.closeDrawer(mDrawerList); 
      } 
     }); 
    } 

    @SuppressLint("Recycle") 
    protected void getUrl(int position) { 
     FragmentTransaction fragTran = getSupportFragmentManager() 
       .beginTransaction(); 
     switch (position) { 
     case 0: 
      fragTran.replace(R.id.content_frame, dashboardFragment); 
      fragTran.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
      fragTran.addToBackStack(null); 
      fragTran.commit(); 
      break; 
     case 1: 

     case 2: 

     case 3: 
      // return ""; 
     case 4: 

     case 5: 

     case 6: 
      // return ""; 
     default: 
      // return ""; 
     } 
    } 

    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     mDrawerToggle.syncState(); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     if (mDrawerToggle.onOptionsItemSelected(item)) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    /** 
    * Called whenever we call invalidateOptionsMenu() 
    * */ 
    @Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 
     // If the drawer is open, hide action items related to the content view 
     boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList); 

     menu.findItem(R.id.action_settings).setVisible(!drawerOpen); 
     return super.onPrepareOptionsMenu(menu); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 
} 

Этот вопрос он показывает пустую страницу

+0

Является ли ваш класс 'DashBoardFragment'' FragmentActivity'? Покажите свой код класса DashBoardFragment. – GrIsHu

+0

@GrIsHu обновил мой вопрос с полным кодом – Developer

+0

почтовый индекс activitydashbordlayout xml – Hardik

ответ

0

Ваш класс должен быть таким (FragmentActivity не имеет метода OnCreateView, у которого есть метод OnCreate), поэтому просто измените метод OnCrateView на OnCreate.

public class Login extends FragmentActivity { 
     public static String url = ""; 
     public static ProgressDialog progressDialog; 
     EditText username, password; 
     TextView error; 
     ImageView ok; 
     static String AppResponse = null; 
     ProgressDialog pd; 
     private Fragment dashboardFragment; 
     View rootView = null; 
     @Override 
     protected Void onCreate(Bundle savedInstanceState) { 

      SharedPreferences shared = getSharedPreferences("shared", MODE_PRIVATE); 
      dashboardFragment = new DashBoardFragment(); 
      if (shared.contains("username") && shared.contains("password")) { 

       startingActivity(); 
      } else { 
       progressDialog = new ProgressDialog(this); 
       progressDialog.setMessage("Please Wait Validating .!!!"); 
       progressDialog.setIndeterminate(false); 
       progressDialog.setProgressStyle(ProgressDialog.THEME_HOLO_DARK); 
       progressDialog.setCancelable(false); 
       setContentView(R.layout.activity_login); 

       username = (EditText) findViewById(R.id.textUserName); 
       password = (EditText) findViewById(R.id.textPassword); 
       ok = (ImageView) findViewById(R.id.btn_login); 
       error = (TextView) findViewById(R.id.error_view); 
       pd = new ProgressDialog(this); 
       pd.setMessage("Logging In"); 
       ok.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         String pass = password.getText().toString(); 
         String userId = username.getText().toString(); 
         boolean isConnected = isNetworkConnected(Login.this); 
         Log.d("Network Status", "Status is " + isConnected); 
         if (userId.equals("") || pass.equals("")) { 
          error.setText("Please provide UserName and Password...!!!!!"); 
         } else { 
          if (isConnected) { 
           postHttpRequest(userId, pass, error); 
          } else { 
           Toast.makeText(getApplicationContext(), 
             "No Network Connection", Toast.LENGTH_LONG) 
             .show(); 
          } 
         } 
        } 
       }); 
      } 

     } 
+0

на этой строке rootView = inflater.inflate (R.layout.activity_login, контейнер, false); он показывает, что надувной сигнал ошибки не может быть разрешен, и контейнер не может быть разрешен переменной – Developer

+0

см. мой отредактированный ответ сейчас (вам нужно установитьContentView (R.layout.activity_login)) – Hardik

+0

, когда функция startActivity называется i am get exception .that i отправили в вопрос, пожалуйста, проверьте, что – Developer

0

AS вашего static final String[] DASHBOARD_LINKS = new String[] { }; массива не содержит значений, так что не то, что почему связывания каких-либо данных в ваш GridView.

Добавьте некоторые данные в свой массив строк, а затем привяжите их в своем адаптере GridView.

+0

Я только что удалил значения, пока я помещал это в поток StackOver У меня есть значения в этом. Это не проблема – Developer

+0

Попробуйте отладить код вашего адаптера класс? Связает ли это данные с вашим GridView? – GrIsHu

+0

Да, проверенная часть работает нормально – Developer

Смежные вопросы