2015-02-28 4 views
0

Я довольно новичок в Android. У меня есть следующий код для отображения пользовательского диалога, когда пользователь нажимает кнопку. Вот код:Исключение Null Pointer в OnClickListener

MainActivity.java

public class MainActivity extends ActionBarActivity implements View.OnClickListener { 

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

    Button customBtn = (Button)findViewById(R.id.custombtn); 
    customBtn.setOnClickListener(this); 
} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

@Override 
public void onClick(View v) 
{ 
    if(v == findViewById(R.id.custombtn)) 
    { 
     String message = "This is a Custom Dialog."; 

     Dialog dialog = new Dialog(MainActivity.this); 
     dialog.setContentView(R.layout.custom_layout); 
     dialog.setTitle("Custom Dialog"); 

     TextView texter = (TextView)findViewById(R.id.text); 
     texter.setText(message); 

     ImageView image = (ImageView)findViewById(R.id.image); 
     //image.setImageResource(R.drawable.abc_spinner_mtrl_am_alpha); 
     dialog.show(); 
    } 
} 
} 

И здесь является файл custom_layout.xml

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<ImageView 
    android:id="@+id/image" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:layout_marginRight="10dp" /> 

<TextView 
    android:id="@+id/text" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:textColor="@color/accent_material_light"/> 
</LinearLayout> 

, когда я запустить приложение и нажмите на НАЗН.КНОПКА, приложение Аварии со следующей ошибкой:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference 
     at com.adhish.onclicklisten.MainActivity.onClick(MainActivity.java:105) 

Я довольно новичок в Android и не знаю, что это значит. Я попробовал Googling, и это не работает в моем случае.

Пожалуйста, помогите.

+0

Да я проверил, но решение не работает, @JonathonReinhart –

+0

@ ρяσѕρєяK Вы, пожалуйста, будьте добры и скажите мне, как это делается? Я довольно новый! –

ответ

1

Использование dialog для доступа с видом из custom_layout макета:

TextView texter = (TextView)dialog.findViewById(R.id.text); 
    texter.setText(message); 
    ImageView image = (ImageView)dialog.findViewById(R.id.image); 
+0

Хорошо ,, Он работает .. поэтому я пропустил ключевое слово DIALOG, и, следовательно, компилятор не смог правильно ссылаться на мой объект? –

+0

@AdhishThite: да без системы 'dialog', пытаясь найти' text' 'image' в макете действий, который является' activity_main' вместо Dialog –

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