Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法添加函数";OnClickListener";到图像按钮_Java_Android_Android Imagebutton - Fatal编程技术网

Java 无法添加函数";OnClickListener";到图像按钮

Java 无法添加函数";OnClickListener";到图像按钮,java,android,android-imagebutton,Java,Android,Android Imagebutton,以下是我的Java代码: public class MainPage extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { TabLayout tabLayout; ViewPageAdapter viewPageAdapter; ViewPager viewPager; ImageButton pfp; Bitmap bitmap_one; private String

以下是我的Java代码:

public class MainPage extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

TabLayout tabLayout;
ViewPageAdapter viewPageAdapter;
ViewPager viewPager;
ImageButton pfp;
Bitmap bitmap_one;

private String UPLOAD_URL = "http://.php";
private int PICK_IMAGE_REQUEST = 1;
private String KEY_IMAGE = "image";

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


    //id's
    pfp = (ImageButton) findViewById(R.id.imageButton_one);
    pfp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (v == pfp){
                showFileChooser();
            }
        }
    });


    //SearchIntent
    Intent searchI = getIntent();
    if (Intent.ACTION_SEARCH.equals(searchI.getAction())) {

        String query = searchI.getStringExtra(SearchManager.QUERY);
        Toast.makeText(MainPage.this, query, Toast.LENGTH_SHORT).show();
    }

    //Toolbar
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setTitle(null);

    //Tabs
    tabLayout = (TabLayout) findViewById(R.id.tablayout_two);
    viewPager = (ViewPager) findViewById(R.id.viewPager_two);
    viewPageAdapter = new ViewPageAdapter(getSupportFragmentManager());
    viewPageAdapter.addFragments(new FeedFragment(), "Feed");
    viewPageAdapter.addFragments(new MessagesFragment(), "Messages");
    viewPageAdapter.addFragments(new NotificationsFragment(), "Notifications");
    viewPager.setAdapter(viewPageAdapter);
    tabLayout.setupWithViewPager(viewPager);


    //FloatingActionButton
    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
        }
    });


    //NavigationDrawer
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
}

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}

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

    if (id == R.id.profile) {

        Intent i = new Intent(this, Profile.class);
        startActivity(i);

    } else if (id == R.id.whatshot) {

        Intent i = new Intent(this, WhatsHot.class);
        startActivity(i);

    } else if (id == R.id.trending) {

        Intent i = new Intent(this, Trending.class);
        startActivity(i);

    } else if (id == R.id.radioplayer) {

        Intent i = new Intent(this, Radio.class);
        startActivity(i);

    } else if (id == R.id.musicplayer) {

        Intent i = new Intent(this, MusicPlayer.class);
        startActivity(i);

    } else if (id == R.id.settings) {

        Intent i = new Intent(this, Settings.class);
        startActivity(i);

    } else if (id == R.id.info) {

        Intent i = new Intent(this, Info.class);
        startActivity(i);

    }

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.main_menu, menu);

    SearchView searchView = (SearchView) menu.findItem(R.id.search_view).getActionView();
    SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE);
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

    return super.onCreateOptionsMenu(menu);
}


//ImageInfo
private void showFileChooser() {
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
        Uri filePath = data.getData();
        try {

            bitmap_one = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
            pfp.setImageBitmap(bitmap_one);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}



//Typeface
private void initTypeface() {

    Typeface myTypeface = Typeface.createFromAsset(getAssets(), "fonts/Amble-Regular.ttf");
    TextView text = (TextView) findViewById(R.id.toolbarTitle);
    text.setTypeface(myTypeface);

}
}
以下是我的XML代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/nav_header_height"
android:background="@drawable/side_nav_bar"
android:gravity="bottom"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:theme="@style/ThemeOverlay.AppCompat.Dark">

<ImageButton
    android:id="@+id/imageButton_one"
    android:layout_width="90dp"
    android:background="#2A363B"
    android:onClick="pfpClick"
    android:layout_height="90dp"
    android:paddingTop="@dimen/nav_header_vertical_spacing" />

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="@dimen/nav_header_vertical_spacing"
    android:text=""
    android:textAppearance="@style/TextAppearance.AppCompat.Body1" />

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="" />

</LinearLayout>

我试图实现的是,只要单击ImageButton,我就可以选择一个文件并添加它。但我不断地得到一个错误:

尝试调用虚拟方法“void” android.widget.ImageButton.setOnClickListener(android.view.view$OnClickListener)' 关于空对象引用


p.S“我的图像”按钮位于导航抽屉中。

您应该执行以下操作之一:

android:onClick="pfpClick"
但是您需要在类中定义一个名为pfpClick的方法,而该方法不存在

还是这个

pfp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (v == pfp){
                showFileChooser();
            }
        }
    });
两者同时进行是一种不好的做法,对于第二种选择来说也是如此 这是不必要的:

if (v == pfp){ 
因为您正在实现的侦听器是匿名的

我建议在布局中删除此选项:

 android:onClick="pfpClick"
然后清理/修改侦听器代码段:

pfp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showFileChooser();

        }
    });

您应该执行以下操作之一:

android:onClick="pfpClick"
但是您需要在类中定义一个名为pfpClick的方法,而该方法不存在

还是这个

pfp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (v == pfp){
                showFileChooser();
            }
        }
    });
两者同时进行是一种不好的做法,对于第二种选择来说也是如此 这是不必要的:

if (v == pfp){ 
因为您正在实现的侦听器是匿名的

我建议在布局中删除此选项:

 android:onClick="pfpClick"
然后清理/修改侦听器代码段:

pfp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showFileChooser();

        }
    });

看起来像是行
pfp=(ImageButton)findViewById(R.id.ImageButton\u one)返回一个空对象

只有当您的XML出现问题时(您没有使用正确的布局,或者视图
id
与XML中的视图不匹配),这才符合逻辑


另一种情况可能是,您必须执行
Build->cleanproject
,然后重新构建并运行应用程序。

看起来像
pfp=(ImageButton)findViewById(R.id.ImageButton\u one)这一行返回一个空对象

只有当您的XML出现问题时(您没有使用正确的布局,或者视图
id
与XML中的视图不匹配),这才符合逻辑


另一种情况可能是,您必须执行
Build->Clean Project
,然后重新生成并运行您的应用程序。

您是否尝试过清理并重新生成您的项目?如果您真的想执行一个条件,那么它应该像if(v.getId()==R.id.imageButton_one),而不是if(v==pfp)。是否尝试清理和重建项目?如果确实要执行某个条件,则应该是if(v.getId()==R.id.imageButton_one),而不是if(v==pfp)。