2015-08-28 2 views
0

сказать это в начале - я не очень хороший программист.Как создать кнопку редактирования в Contextmenu в Android Studio

Im пытается создать контекстное меню с функцией удаления и редактирования, но у меня возникли проблемы с функцией редактирования. Как только пользователь нажимает кнопку редактирования в контекстном меню, он должен иметь возможность изменить имя кнопки, которую я долго нажал, чтобы открыть контекстное меню.

@Override 
public boolean onContextItemSelected(MenuItem item){ 


    switch(item.getItemId()){ 
     case R.id.Bearbeiten: 
     EditText editText = (EditText) findViewById(R.id.editText); 
      buttonActOne.setText(editText.getText()); 
      return true; 

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

Я действительно надеюсь, что у кого-то есть хороший ответ для меня.

Edit:

Ok, прежде всего спасибо за ответы до сих пор. Im размещение моего полного MainActivity.java

package com.example.michl.myapplication5; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.ContextMenu; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 


public class MainActivity extends Activity { 


private TextView textViewIntro; 


public Button buttonActOne; 
public Button buttonActTwo; 
public Button buttonActThree; 
public Button buttonActFour; 
public Button buttonActFive; 
public Button buttonActSix; 
public Button buttonActSeven; 
public Button buttonActEight; 
public Button buttonActNine; 





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



    textViewIntro = (TextView) findViewById(R.id.textViewIntro); 


    Button ButtonActOne = (Button) findViewById(R.id.buttonActOne); 
    ButtonActOne.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(MainActivity.this, Seite_zwei.class)); 
      Button ButtonActOne = (Button)findViewById(R.id.buttonActOne); 
      registerForContextMenu(ButtonActOne); 


     } 
    }); 



    Button ButtonActTwo = (Button) findViewById(R.id.buttonActTwo); 

    ButtonActTwo.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(MainActivity.this, Seite_drei.class)); 

      Button ButtonActTwo = (Button)findViewById(R.id.buttonActTwo); 
      registerForContextMenu(ButtonActTwo); 
     } 
    }); 

    Button ButtonActThree = (Button) findViewById(R.id.buttonActThree); 

    ButtonActThree.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(MainActivity.this, Seite_vier.class)); 

      Button ButtonActThree = (Button)findViewById(R.id.buttonActThree); 
      registerForContextMenu(ButtonActThree); 
     } 
    }); 
    Button ButtonActFour = (Button) findViewById(R.id.buttonActFour); 

    ButtonActFour.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(MainActivity.this, Seite_fuenf.class)); 

      Button ButtonActFour = (Button)findViewById(R.id.buttonActFour); 
      registerForContextMenu(ButtonActFour); 
     } 
    }); 
    Button ButtonActFive = (Button) findViewById(R.id.buttonActFive); 

    ButtonActFive.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(MainActivity.this, Seite_sechs.class)); 

      Button ButtonActFive = (Button)findViewById(R.id.buttonActFive); 
      registerForContextMenu(ButtonActFive); 
     } 
    }); 
    Button ButtonActSix = (Button) findViewById(R.id.buttonActSix); 

    ButtonActSix.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(MainActivity.this, Seite_sieben.class)); 

      Button ButtonActSix = (Button)findViewById(R.id.buttonActSix); 
      registerForContextMenu(ButtonActSix); 
     } 
    }); 
    Button ButtonActSeven = (Button) findViewById(R.id.buttonActSeven); 

    ButtonActSeven.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(MainActivity.this, Seite_acht.class)); 

      Button ButtonActSeven = (Button)findViewById(R.id.buttonActSeven); 
      registerForContextMenu(ButtonActSeven); 
     } 
    }); 
    Button ButtonActEight = (Button) findViewById(R.id.buttonActEight); 

    ButtonActEight.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(MainActivity.this, Seite_neun.class)); 

      Button ButtonActEight = (Button)findViewById(R.id.buttonActEight); 
      registerForContextMenu(ButtonActEight); 
     } 
    }); 



} 


@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 

    getMenuInflater().inflate(R.menu.menu_main, menu); 
} 

@Override 
public boolean onContextItemSelected(MenuItem item){ 


    switch(item.getItemId()){ 
     case R.id.Bearbeiten: 
     EditText editText = (EditText) findViewById(R.id.editText); 
      buttonActOne.setText(editText.getText()); 




      return true; 
     case R.id.Löschen: 
      return true; 
      default: 

    } 

    return super.onContextItemSelected(item); 


} 


@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); 


    } 
} 

А вот мой журнал LogCat, когда я начала программку и попытаться изменить что-то.

08-28 13:52:06.135 26482-26482/com.example.michl.myapplication5 D/dalvikvm﹕ Late-enabling CheckJNI 
08-28 13:52:06.150 26482-26488/com.example.michl.myapplication5 E/jdwp﹕ Failed sending reply to debugger: Broken pipe 
08-28 13:52:06.150 26482-26488/com.example.michl.myapplication5 D/dalvikvm﹕ Debugger has detached; object registry had 1 entries 
08-28 13:52:06.290 26482-26482/com.example.michl.myapplication5 D/libEGL﹕ loaded /system/lib/egl/libEGL_mali.so 
08-28 13:52:06.295 26482-26482/com.example.michl.myapplication5 D/libEGL﹕ loaded /system/lib/egl/libGLESv1_CM_mali.so 
08-28 13:52:06.295 26482-26482/com.example.michl.myapplication5 D/libEGL﹕ loaded /system/lib/egl/libGLESv2_mali.so 
08-28 13:52:06.300 26482-26482/com.example.michl.myapplication5 D/﹕ Device driver API match 
    Device driver API version: 10 
    User space API version: 10 
08-28 13:52:06.300 26482-26482/com.example.michl.myapplication5 D/﹕ mali: REVISION=Linux-r2p4-02rel0 BUILD_DATE=Thu Oct 25 08:43:05 KST 2012 
08-28 13:52:06.315 26482-26482/com.example.michl.myapplication5 D/OpenGLRenderer﹕ Enabling debug mode 0 
08-28 13:52:17.355 26482-26482/com.example.michl.myapplication5 I/dalvikvm﹕ Could not find method android.view.ViewGroup.onRtlPropertiesChanged, referenced from method android.support.v7.widget.Toolbar.onRtlPropertiesChanged 
08-28 13:52:17.355 26482-26482/com.example.michl.myapplication5 W/dalvikvm﹕ VFY: unable to resolve virtual method 13334: Landroid/view/ViewGroup;.onRtlPropertiesChanged (I)V 
08-28 13:52:17.355 26482-26482/com.example.michl.myapplication5 D/dalvikvm﹕ VFY: replacing opcode 0x6f at 0x0007 
08-28 13:52:17.360 26482-26482/com.example.michl.myapplication5 I/dalvikvm﹕ Could not find method android.content.res.TypedArray.getChangingConfigurations, referenced from method android.support.v7.internal.widget.TintTypedArray.getChangingConfigurations 
08-28 13:52:17.360 26482-26485/com.example.michl.myapplication5 D/dalvikvm﹕ GC_CONCURRENT freed 188K, 14% free 9612K/11143K, paused 12ms+18ms, total 49ms 
08-28 13:52:17.360 26482-26482/com.example.michl.myapplication5 W/dalvikvm﹕ VFY: unable to resolve virtual method 412: Landroid/content/res/TypedArray;.getChangingConfigurations()I 
08-28 13:52:17.360 26482-26482/com.example.michl.myapplication5 D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x0002 
08-28 13:52:17.360 26482-26482/com.example.michl.myapplication5 I/dalvikvm﹕ Could not find method android.content.res.TypedArray.getType, referenced from method android.support.v7.internal.widget.TintTypedArray.getType 
08-28 13:52:17.360 26482-26482/com.example.michl.myapplication5 W/dalvikvm﹕ VFY: unable to resolve virtual method 434: Landroid/content/res/TypedArray;.getType (I)I 
08-28 13:52:17.360 26482-26482/com.example.michl.myapplication5 D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x0002 
08-28 13:52:17.465 26482-26482/com.example.michl.myapplication5 E/SpannableStringBuilder﹕ SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 
08-28 13:52:17.465 26482-26482/com.example.michl.myapplication5 E/SpannableStringBuilder﹕ SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 
08-28 13:52:18.345 26482-26482/com.example.michl.myapplication5 E/SpannableStringBuilder﹕ SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 
08-28 13:52:18.345 26482-26482/com.example.michl.myapplication5 E/SpannableStringBuilder﹕ SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 
08-28 13:52:19.605 26482-26482/com.example.michl.myapplication5 D/AbsListView﹕ Get MotionRecognitionManager 
08-28 13:52:19.635 26482-26482/com.example.michl.myapplication5 W/ResourceType﹕ Failure getting entry for 0x010802c1 (t=7 e=705) in package 0 (error -75) 
08-28 13:52:20.935 26482-26482/com.example.michl.myapplication5 D/AndroidRuntime﹕ Shutting down VM 
08-28 13:52:20.935 26482-26482/com.example.michl.myapplication5 W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x4191e2a0) 
08-28 13:52:20.955 26482-26482/com.example.michl.myapplication5 E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    java.lang.NullPointerException 
      at com.example.michl.myapplication5.MainActivity.onContextItemSelected(MainActivity.java:161) 
      at android.app.Activity.onMenuItemSelected(Activity.java:2647) 
      at com.android.internal.policy.impl.PhoneWindow$DialogMenuCallback.onMenuItemSelected(PhoneWindow.java:3921) 
      at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735) 
      at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149) 
      at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874) 
      at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:193) 
      at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:934) 
      at android.widget.AdapterView.performItemClick(AdapterView.java:301) 
      at android.widget.AbsListView.performItemClick(AbsListView.java:1280) 
      at android.widget.AbsListView$PerformClick.run(AbsListView.java:3071) 
      at android.widget.AbsListView$1.run(AbsListView.java:3973) 
      at android.os.Handler.handleCallback(Handler.java:615) 
      at android.os.Handler.dispatchMessage(Handler.java:92) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:4921) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794) 
      at dalvik.system.NativeStart.main(Native Method) 
08-28 13:52:31.590 26482-26482/com.examp 

le.michl.myapplication5 I/Process﹕ Sending signal. PID: 26482 SIG: 9 
+0

разместим ваш LogCat пожалуйста. –

+0

Вы инициализировали свою кнопку buttonActOne? –

+0

Я обновил вопрос. – DAU

ответ

0

Объявление вашей кнопки на методе onCreate Activity!

Button buttonActOne = findViewById(R.id.buttonActOneId); 

Затем добавить слушателя к нему:

buttonActOne.setOnClickListener(this); 

setOnClickListener реализует интерфейс View.OnClickListener, поэтому метод @Override он должен быть OnClick (View v), то в переключателе вы может использовать v.getId();

В резюме:

public class YourActivityName extends Activity implements View.OnClickListener { 
    private Button buttonActOne; 

    @Override 
    public void onCreate(Bundle b) { 
     //set your layout 
     buttonActOne = findViewById(R.id.buttonActOneId); //put the id defined in your xml layout 
    } 

    @Override 
    public void onClick(View view) { 
     if (View.getId(R.id.Bearbeiten)) { 
      EditText editText = (EditText) findViewById(R.id.editText); 
      buttonActOne.setText(editText.getText()); 
     } 
    } 
}