2013-06-19 5 views
0

Я хотел бы сделать приложение для просмотра изображений, но я не могу показать изображение в полноэкранном режиме. Я могу загрузить его с SD-карты, но когда я нажимаю на изображение, приложение разбилось. Может кто-нибудь мне помочь?Показать изображение в полноэкранном режиме

Вот мой код:

public class MainActivity extends Activity { 
private ImageAdapter imageAdapter; 
ArrayList<String> f = new ArrayList<String>();// list of file paths 
ArrayList<Integer> resultList = getIntegerArray(f); 
File[] listFile; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    getFromSdcard(); 
    GridView imagegrid = (GridView) findViewById(R.id.ImageGrid); 
    imageAdapter = new ImageAdapter(); 
    imagegrid.setAdapter(imageAdapter); 


    imagegrid.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View v, 
       int position, long id) { 
      Intent i = new Intent(getApplicationContext(), FullImageActivity.class); 
      i.putExtra("id", position); 
      startActivity(i); 
     } 
    }); 

Мой FullImageActivity

public class FullImageActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.full_image); 

     // get intent data 
     Intent i = getIntent(); 

     // Selected image id 
     int position = i.getExtras().getInt("id"); 
     ImageAdapter imageAdapter = new ImageAdapter(); 

     ImageView imageView = (ImageView) findViewById(R.id.full_image_view); 
     imageView.setImageResource(resultList.get(position)); 
    } 
} 

Мои LogCat сообщения об ошибках

06-19 11:41:28.456: E/AndroidRuntime(12723): FATAL EXCEPTION: main 
    06-19 11:41:28.456: E/AndroidRuntime(12723): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.testandroid4/com.example.testandroid4.MainActivity$FullImageActivity}; have you declared this activity in your AndroidManifest.xml? 
    06-19 11:41:28.456: E/AndroidRuntime(12723): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1618) 
    06-19 11:41:28.456: E/AndroidRuntime(12723): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417) 
    06-19 11:41:28.456: E/AndroidRuntime(12723): at android.app.Activity.startActivityForResult(Activity.java:3370) 
    06-19 11:41:28.456: E/AndroidRuntime(12723): at android.app.Activity.startActivityForResult(Activity.java:3331) 
    06-19 11:41:28.456: E/AndroidRuntime(12723): at android.app.Activity.startActivity(Activity.java:3566) 
    06-19 11:41:28.456: E/AndroidRuntime(12723): at android.app.Activity.startActivity(Activity.java:3534) 
    06-19 11:41:28.456: E/AndroidRuntime(12723): at com.example.testandroid4.MainActivity$1.onItemClick(MainActivity.java:61) 
    06-19 11:41:28.456: E/AndroidRuntime(12723): at android.widget.AdapterView.performItemClick(AdapterView.java:298) 
    06-19 11:41:28.456: E/AndroidRuntime(12723): at android.widget.AbsListView.performItemClick(AbsListView.java:1100) 
    06-19 11:41:28.456: E/AndroidRuntime(12723): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2749) 
    06-19 11:41:28.456: E/AndroidRuntime(12723): at android.widget.AbsListView$1.run(AbsListView.java:3423) 
    06-19 11:41:28.456: E/AndroidRuntime(12723): at android.os.Handler.handleCallback(Handler.java:725) 
    06-19 11:41:28.456: E/AndroidRuntime(12723): at android.os.Handler.dispatchMessage(Handler.java:92) 
    06-19 11:41:28.456: E/AndroidRuntime(12723): at android.os.Looper.loop(Looper.java:137) 
    06-19 11:41:28.456: E/AndroidRuntime(12723): at android.app.ActivityThread.main(ActivityThread.java:5041) 
    06-19 11:41:28.456: E/AndroidRuntime(12723): at java.lang.reflect.Method.invokeNative(Native Method) 
    06-19 11:41:28.456: E/AndroidRuntime(12723): at java.lang.reflect.Method.invoke(Method.java:511) 
    06-19 11:41:28.456: E/AndroidRuntime(12723): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
    06-19 11:41:28.456: E/AndroidRuntime(12723): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
    06-19 11:41:28.456: E/AndroidRuntime(12723): at dalvik.system.NativeStart.main(Native Method) 
+0

След стека журнала LogCat был бы полезен здесь –

+0

опубликовать деталь журнала или что создано исключение –

+0

Я уже обновил ошибку logcat –

ответ

0

использовать этот код на

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

и использовать этот код в андроида манифеста для FullImageActivity

android:theme="@android:style/Theme.Black.NoTitleBar" 

или еще попробовать это в XML как

android:layout_width="fill_parent" 
android:layout_height="fill_parent" 

для full_image_view

+0

Я уже реализую код, но он не работает. приложения все еще сбой, если я нажимаю на изображение –

+0

Я думаю, что resultList не имеет этого url u должен проверить его по LogCat –

0

Вы забыли объявить вашу деятельность в Файл манифеста.

Вы должны добавить это в Manifest.xml:

<activity android:name="com.example.testandroid4.MainActivity$FullImageActivity" /> 
+0

Спасибо, я действительно забыл об этом. Но после того, как я реализую эту деятельность, приложения все еще разбились. :( –

0

Я не вижу, где вы resultList определены в FullImageActivity. Я вижу, что он определен в MainActivity и как вы заполняете его с помощью getIntegerArray (f) (что, я думаю, вы делаете это правильно, потому что кода здесь нет), но я не могу определить этот массив в FullImageActivity.

Я тоже думал, что если у вас есть массив id (drawables в вашем проекте). Почему бы вам не пройти Drawable идентификатор непосредственно в FullImageActivity от вашего MainActivity, что где у вас есть массив ?, так:

imagegrid.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View v, 
      int position, long id) { 
     Intent i = new Intent(getApplicationContext(), FullImageActivity.class); 
     i.putExtra("id",resultList.get(position)); 
     startActivity(i); 
    } 
}); 

, а затем на FullImageActivity ...:

// get extras in a bundle 
Bundle bundle = getIntent().getExtras();  
//Create the variable where we are going o store the values passed on the array from   MainActivity 
int imageResorceId=0; 
// Check if the bundle is null 
if(bundle!=null){ 
    imageResorceId = bundle.getInt("id",0); 
} 
//Set the imageView where we will display the drawable 
ImageView imageView = (ImageView) findViewById(R.id.full_image_view); 

//Make sure it is not 0, because if the drawable id is 0, then there was a problem retrieving the value of the array resultList on MainActivity 

if(imageResorceId!=0){ 
    imageView.setImageResource(imageResorceId); 
} 

Если вы хотите реализовать ViewPager для своей FullImageActivity, вам нужна позиция и массив элементов, но если вы этого не хотите ... зачем беспокоиться? ;)

+0

Я не видел LogCat, пока не опубликовал свой ответ, так или иначе, я думаю, что это тоже полезно. Кстати, ДА, Ослик прав, и вы должны объявить свою деятельность в файле AndroidManifest.xml. – jpardogo

+0

спасибо, но я немного смущен. Что такое mImagesResourseId и mposposition? –

+0

Я просто упростил ответ, поэтому я написал то, что, как мне кажется, делает bettter. Мы передали от MainActivity к деятельности FullImageActivity значение массива resultList (resultList.get (position)) в качестве дополнительного, и мы получаем его на FullImageActivity, и мы храним его в переменной imageResorceId, затем мы используем это значение в case is not 0, чтобы установить изображение на изображенииView (imageView.setImageResource (imageResorceId). Яснее сейчас? – jpardogo